2进制数转换为10进制
(110)2转化为十进制
10进制整理转换成2进制
于是,结果是余数的倒排列,即为:
(37)10=(a5a4a3a2a1a0)2=(100101)2
16进制转化成2进制、2进制转化成16进制
(二进制和十六进制的互相转换比较重要。
不过这二者的转换却不用计算,每个C,C++程序员都能做到看见二进制数,直接就能转换为十六进制数,反之亦然。
)
16进制转化成2进制:每一位十六进制数对应二进制的四位,逐位展开。
二进制数转为十六进制:将二进制数转换成十六进制数是将二进数的整数部分从右向左每四位一组,每一组为一位十六进制整数,不足四位时,在前面补0 (FB)16=(1111 ,1011)2 互转
2进制与16进制的关系:
2进制0000 0001 0010 0011 0100 0101 0110 0111
16进制0 1 2 3 4 5 6 7
2进制1000 1001 1010 1011 1100 1101 1110 1111
16进制8 9 A B C D E F
可以用四位数的二进制数来代表一个16进制,如3A16 转为二进制为:
3为0011,A 为1010,合并起来为00111010。
可以将最左边的0去掉得1110102
右要将二进制转为16进制,只需将二进制的位数由右向左每四位一个单位分隔,将各单位对照出16进制的值即可。
16进制数转换为10进制数
假设有一个十六进数 2AF5, 那么如何换算成10进制呢?
用竖式计算: 2AF5换算成10进制:
直接计算就是:
5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997
(别忘了,在上面的计算中,A表示10,而F表示15)
假设有人问你,十进数 1234 为什么是一千二百三十四?
你尽可以给他这么一个算式: 1234 = 1 * 10^3 + 2 * 10^2 + 3 * 10^1 + 4 * 10^0
如十进制数2039
它可以表示为:2*10^3+0*10^2+3*10^1+9*10^0
那么任何进制的数都一样,例如16进制数8A30E
它就是8*16^4+10*16^3+3*16^2+0*16^1+14*16^0=566030, 算出来的值就是这个数对应的十进制数
又例如k进制数abcdef(这是一个6位数)
它就是a*k^5+b*k^4+c*k^3+d*k^2+e*k^1+f*k^0
16进制数转换为10进制数
与10进制整理转换成2进制类似,只是把除数改为16
除16取余
例如56
16|57 9
----
3
除数不够16除即停止结果39H
例如337
16|337 1
----
16|21 5
---
1
结果151H。