2进制 怎么转换为 16 进制

如题所述

进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算,每个C,C++程序员都能做到看见二进制数,直接就能转换为十六进制数,反之亦然。   我们也一样,只要学完这一小节,就能做到。   首先我们来看一个二进制数:1111,它是多少呢?   你可能还要这样计算:1 * 2^0 + 1 * 2^1 + 1 * 2^2 + 1 * 2^3 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。   然而,由于1111才4位,所以我们必须直接记住它每一位的权值,并且是从高位往低位记,:8、4、2、1。即,最高位的权值为2^3 = 8,然后依次是 2^2 = 4,2^1=2, 2^0 = 1。   记住8421,对于任意一个4位的二进制数,我们都可以很快算出它对应的10进制值。   下面列出四位二进制数xxxx 所有可能的值(中间略过部分)   仅4位的2进制数 快速计算方法 十进制值 十六进值   1111 = 8 + 4 + 2 + 1 = 15 F   1110 = 8 + 4 + 2 + 0 = 14 E   1101 = 8 + 4 + 0 + 1 = 13 D   1100 = 8 + 4 + 0 + 0 = 12 C   1011 = 8 + 0 + 2+ 1 = 11 B   1010 = 8 + 0 + 2 + 0 = 10 A   1001 = 8 + 0 + 0 + 1 = 9 9   ....   0001 = 0 + 0 + 0 + 1 = 1 1   0000 = 0 + 0 + 0 + 0 = 0 0   二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。   如(上行为二制数,下面为对应的十六进制):   1111 1101 , 1010 0101 , 1001 1011   F D , A 5 , 9 B   反过来,当我们看到 FD时,如何迅速将它转换为二进制数呢?   先转换F:   看到F,我们需知道它是15(可能你还不熟悉A~F这五个数),然后15如何用8421凑呢?应该是8 + 4 + 2 + 1,所以四位全为1 :1111。   接着转换 D:   看到D,知道它是13,13如何用8421凑呢?应该是:8 + 4 + 1,即:1101。   所以,FD转换为二进制数,为: 1111 1101   由于十六进制转换成二进制相当直接,所以,我们需要将一个十进制数转换成2进制数时,也可以先转换成16进制,然后再转换成2进制。   比如,十进制数 1234转换成二制数,如果要一直除以2,直接得到2进制数,需要计算较多次数。所以我们可以先除以16,得到16进制数:   被除数 计算过程 商 余数   1234 1234/16 77 2   77 77/16 4 13 (D)   4 4/16 0 4   结果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*16^7+D*16^6+E*16^5+5*16^4+A*16^3+F*16^2+1*16^1+B*16^0=1,843,769,115追问

我是想问 如何用C语言程序实现

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-08
以小数点为基准,从右到左每四位一组,不足四位的在高位上补0;小数部位从左到右每四位一组,不足四位的在低位补0.每四位一组的二进制数表示一位十六进制数。
举个例子:
将二进制数10111001011.01001转换为十六进制数。
解:
(将四位二进制分为一组,用相应的十六进制数代替)
(0101 1100 1011.0100 1000)二进制=(5CB.48)十六进制
希望能帮到你追问

我是想问 如何用C语言程序实现