进制转换算法是怎么算( 三 )


11118 4 2 115F
11108 4 2 014E
11018 4 0 113D
11008 4 0 012C
10118 0 2 111B
10108 0 2 010A
10018 0 0 199
……
00010 0 0 111
00000 0 0 000
二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制 。
如:
二进制数 1111 1101 1010 0101 1001 1011
对应的十六进制数 FD A5 9B
反过来,当我们看到 FD时,如何迅速将它转换为二进制数呢?
先转换F:
看到F,我们需知道它是15(可能你还不熟悉A~F这五个数),然后15如何用8421凑呢?应该是8421,所以四位全为1 :1111 。
接着转换 D:
看到D,知道它是13,13如何用8421凑呢?应该是:841,即:1101 。
所以,FD转换为二进制数,为: 1111 1101
由于十六进制转换成二进制相当直接,所以,我们需要将一个十进制数转换成2进制数时,也可以先转换成16进制,然后再转换成2进制 。
比如,十进制数 1234转换成二制数,如果要一直除以2,直接得到2进制数,需要计算较多次数 。所以我们可以先除以16,得到16进制数:
被除数 计算过程 商 余数
12341234/16772
7777/164 13(D)
44/1604
结果16进制为: 0x4D2
然后我们可直接写出0x4D2的二进制形式: 0100 1101 0010 。
其中对映关系为:
0100 -- 4
1101 -- D
0010 -- 2
同样,如果一个二进制数很长,我们需要将它转换成10进制数时,除了前面学过的方法是,我们还可以先将这个二进制转换成16进制,然后再转换为10进制 。
下面举例一个int类型的二进制数:
01101101 11100101 10101111 00011011
我们按四位一组转换为16进制: 6D E5 AF 1B
再转换为10进制:6*167 D*166 E*165 5*164 A*163 F*162 1*161 B*160=1,843,769,115

推荐阅读