进制转换:二进制、八进制、十进制、十六进制相互转换

作者&投稿:颜钧 (若有异议请与网页底部的电邮联系)
~

将二进制、八进制、十六进制转换为十进制。二进制、八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。

假设当前数字是 N 进制,那么:

对于整数部分,从右往左看,第 i 位的位权等于Ni-1

对于小数部分,恰好相反,要从左往右看,第 j 位的位权为N-j。

更加通俗的理解是,假设一个多位数(由多个数字组成的数)某位上的数字是 1,那么它所表示的数值大小就是该位的位权。

1) 整数部分

例如,将八进制数字 53627 转换成十进制:

53627 = 5×84 + 3×83 + 6×82 + 2×81 + 7×80 = 22423(十进制)

从右往左看,第1位的位权为 80=1,第2位的位权为 81=8,第3位的位权为 82=64,第4位的位权为 83=512,第5位的位权为 84=4096 …… 第n位的位权就为 8n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

注意,这里我们需要以十进制形式来表示位权。

再如,将十六进制数字 9FA8C 转换成十进制:

9FA8C = 9×164 + 15×163 + 10×162 + 8×161 + 12×160 = 653964(十进制)

从右往左看,第1位的位权为 160=1,第2位的位权为 161=16,第3位的位权为 162=256,第4位的位权为 163=4096,第5位的位权为 164=65536 …… 第n位的位权就为 16n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

将二进制数字转换成十进制也是类似的道理

11010 = 1×24 + 1×23 + 0×22 + 1×21 + 0×20 = 26(十进制)

从右往左看,第1位的位权为 20=1,第2位的位权为 21=2,第3位的位权为 22=4,第4位的位权为 23=8,第5位的位权为 24=16 …… 第n位的位权就为 2n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

2) 小数部分

例如,将八进制数字 423.5176 转换成十进制:

423.5176 = 4×82 + 2×81 + 3×80 + 5×8-1 + 1×8-2 + 7×8-3 + 6×8-4 = 275.65576171875(十进制)

小数部分和整数部分相反,要从左往右看,第1位的位权为 8-1=1/8,第2位的位权为 8-2=1/64,第3位的位权为 8-3=1/512,第4位的位权为 8-4=1/4096 …… 第m位的位权就为 8-m。

再如,将二进制数字 1010.1101 转换成十进制:

1010.1101 = 1×23 + 0×22 + 1×21 + 0×20 + 1×2-1 + 1×2-2 + 0×2-3 + 1×2-4 = 10.8125(十进制)

小数部分和整数部分相反,要从左往右看,第1位的位权为 2-1=1/2,第2位的位权为 2-2=1/4,第3位的位权为 2-3=1/8,第4位的位权为 2-4=1/16 …… 第m位的位权就为 2-m。

更多转换成十进制的例子:

· 二进制:1001 = 1×23 + 0×22 + 0×21 + 1×20 = 8 + 0 + 0 + 1 = 9(十进制)

· 二进制:101.1001 = 1×22 + 0×21 + 1×20 + 1×2-1 + 0×2-2 + 0×2-3 + 1×2-4 = 4 + 0 + 1 + 0.5 + 0 + 0 + 0.0625 = 5.5625(十进制)

· 八进制:302 = 3×82 + 0×81 + 2×80 = 192 + 0 + 2 = 194(十进制)

· 八进制:302.46 = 3×82 + 0×81 + 2×80 + 4×8-1 + 6×8-2 = 192 + 0 + 2 + 0.5 + 0.09375= 194.59375(十进制)

· 十六进制:EA7 = 14×162 + 10×161 + 7×160 = 3751(十进制)

将十进制转换为二进制、八进制、十六进制

将十进制转换为其它进制时比较复杂,整数部分和小数部分的算法不一样,下面我们分别讲解。

1) 整数部分

十进制整数转换为 N 进制整数采用“除 N 取余,逆序排列”法。具体做法是:

· 将 N 作为除数,用十进制整数除以 N,可以得到一个商和余数;

· 保留余数,用商继续除以 N,又得到一个新的商和余数;

· 仍然保留余数,用商继续除以 N,还会得到一个新的商和余数;

· ……

· 如此反复进行,每次都保留余数,用商接着除以 N,直到商为 0 时为止。

把先得到的余数作为 N 进制数的低位数字,后得到的余数作为 N 进制数的高位数字,依次排列起来,就得到了 N 进制数字。

下图演示了将十进制数字 36926 转换成八进制的过程:

从图中得知,十进制数字 36926 转换成八进制的结果为 110076。

下图演示了将十进制数字 42 转换成二进制的过程:

从图中得知,十进制数字 42 转换成二进制的结果为 101010。

2) 小数部分

十进制小数转换成 N 进制小数采用“乘 N 取整,顺序排列”法。具体做法是:

· 用 N 乘以十进制小数,可以得到一个积,这个积包含了整数部分和小数部分;

· 将积的整数部分取出,再用 N 乘以余下的小数部分,又得到一个新的积;

· 再将积的整数部分取出,继续用 N 乘以余下的小数部分;

· ……

· 如此反复进行,每次都取出整数部分,用 N 接着乘以小数部分,直到积中的小数部分为 0,或者达到所要求的精度为止。

把取出的整数部分按顺序排列起来,先取出的整数作为 N 进制小数的高位数字,后取出的整数作为低位数字,这样就得到了 N 进制小数。

下图演示了将十进制小数 0.930908203125 转换成八进制小数的过程:

从图中得知,十进制小数 0.930908203125 转换成八进制小数的结果为 0.7345。

下图演示了将十进制小数 0.6875 转换成二进制小数的过程:

从图中得知,十进制小数 0.6875 转换成二进制小数的结果为 0.1011。

如果一个数字既包含了整数部分又包含了小数部分,那么将整数部分和小数部分开,分别按照上面的方法完成转换,然后再合并在一起即可。例如:

· 十进制数字 36926.930908203125 转换成八进制的结果为 110076.7345;

· 十进制数字 42.6875 转换成二进制的结果为 101010.1011。

注意,十进制小数转换成其他进制小数时,结果有可能是一个无限位的小数。请看下面的例子:

· 十进制 0.51 对应的二进制为 0.100000101000111101011100001010001111010111...,是一个循环小数;

· 十进制 0.72 对应的二进制为 0.1011100001010001111010111000010100011110...,是一个循环小数;

· 十进制 0.625 对应的二进制为 0.101,是一个有限小数。

二进制和八进制、十六进制的转换

其实,任何进制之间的转换都可以使用上面讲到的方法,只不过有时比较麻烦,所以一般针对不同的进制采取不同的方法。将二进制转换为八进制和十六进制时就有非常简洁的方法,反之亦然。

1) 二进制整数和八进制整数之间的转换

二进制整数转换为八进制整数时,每三位二进制数字转换为一位八进制数字,运算的顺序是从低位向高位依次进行,高位不足三位用零补齐。下图演示了如何将二进制整数 1110111100 转换为八进制:

从图中可以看出,二进制整数 1110111100 转换为八进制的结果为 1674。

八进制整数转换为二进制整数时,思路是相反的,每一位八进制数字转换为三位二进制数字,运算的顺序也是从低位向高位依次进行。下图演示了如何将八进制整数 2743 转换为二进制:

从图中可以看出,八进制整数 2743 转换为二进制的结果为 10111100011。

2) 二进制整数和十六进制整数之间的转换

二进制整数转换为十六进制整数时,每四位二进制数字转换为一位十六进制数字,运算的顺序是从低位向高位依次进行,高位不足四位用零补齐。下图演示了如何将二进制整数 10 1101 0101 1100 转换为十六进制:

从图中可以看出,二进制整数 10 1101 0101 1100 转换为十六进制的结果为 2D5C。

十六进制整数转换为二进制整数时,思路是相反的,每一位十六进制数字转换为四位二进制数字,运算的顺序也是从低位向高位依次进行。下图演示了如何将十六进制整数 A5D6 转换为二进制:

从图中可以看出,十六进制整数 A5D6 转换为二进制的结果为 1010 0101 1101 0110。

由于在C语言编程中,二进制、八进制、十六进制之间几乎不会涉及小数的转换,所以这里我们只讲整数的转换,大家学以致用足以。另外,八进制和十六进制之间也极少直接转换,这里我们也不再讲解了。

总结

本节前面两部分讲到的转换方法是通用的,任何进制之间的转换都可以采用,只是有时比较麻烦而已。二进制和八进制、十六进制之间的转换有非常简洁的方法,所以没有采用前面的方法。




小数点后的进制转换
(1)二进制转十进制: 方法:“按权展开求和”。(2)十进制转二进制:十进制整数转二进制数:“除以2取余,逆序排列”(短除反取余法)十进制小数转二进制数:“乘以2取整,顺序排列”(乘2取整法)(3)八进制与二进制的转换:二进制数转换成八进制数:从小数点开始,整数部分向左、小数部分...

计算机二进制,十进制,八进制,十六进制怎么转换
二进制转八进制:取三合一法,即从二进制的小数点为分界点,向左(向右)每三位取成一位,接着将这三位二进制按权相加,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的八进制数。如果向左(向右)取三位后,取到最高(最低)位时候,如果无法凑足三位,可以在小数点最左边...

八进制转换二进制数怎么转换?
2 \/100 0 2\/50 0 2\/25 1 2\/12 0 2\/6 0 3\/2 1 1\/2 1 然后从尾到头读数就是 1100100 二进制转换八进制是3位一组 所以就是 001 100 100 位数不够,前面补0 2、八进制与二进制、十六进制之间关系与具体步骤 八进制 对应二进制 十六进制 对应二进制 十六进制 对应二进制 0 000 0 ...

二进制(带小数)转八进制方法.
从小数点往两边取二进制数,每3个(不足的补0)转换成一个8进制,一定是从中间往两边,例如:110.01=(110).(010)=6.2 整数位向左补0使整数位数为三的倍数 再三位一转。(十进制)小数位向右补0使小数位数为三的倍数 再三位一转。(十进制)1001.00011=(001)(001).(000)(110)=11....

二进制数转换为八进制数的方法是什么?
二进制转八进制:3位二进制表示1位8进制,采用按位权展开进行计算。举例:二进制数11011101转为八进制 (1)先从低位到高位,划分位3位1组,可以高位补0 011 011 101 (2)按位权展开 以101为例:1*2^2 + 0*2^1 + 1*2^1 = 5 同理计算出其它两组的八进制数,即:335。

二进制小数与八、十、十六进制怎么相互转换?
3.二进制变十六进制 (1)四位合一位 你的例子:10101101.11 拆开:1010 1101.1100 转化:A D.C 结果就是AD.C 4.八进制变二进制 法:一位拆三位 例:AB.3 拆开:A B .3 转化:1010 1011.0011 5.八进制变十进制 法:按权展开 和二变十一样,本质不变 例:AB.3 11*8(0次方)+10...

八进制如何转换成二进制?
比如八进制567,5转换成101,6转为110,7转为111,连在一起即101110111。转换原理,因为8=2^3,所以一位八进制数正好等于三位二进制数。同理一位十六进制数等于四位二进制数。八进制记数法:八进制记数法即八进制,缩写为OCT或O,指以8为基数的记数系统。同二进制、十六进制一样,是计算机中...

二进制十进制八进制十六进制的对应表
二进制的“00101000”直接可以转换成16进制的“28”。字节是电脑中的基本存储单位,根据计算机字长的不同,字具有不同的位数,现代电脑的字长一般是32位的,也就是说,一个字的位数是32。字节是8位的数据单元,一个字节可以表示0-255的十进制数据。对于32位字长的现代电脑,一个字等于4个字节,对于...

计算器中,二进制数转八进制数怎么转?
二进制转换成八进制的方法是,取三合一法,即从二进制的小数点为分界点,整数部分:小数点前的部分, 每3位组成一个八进制数, 不够在前面补0 小数部分:小数点后面,每3位组成一个八进制数,不够在后面补0 例如:1011100.01011 整数部分:1,011, 100 = 1 3 4 小数部分:010, 110(右边...

进制转换
二. 二进制与八进制互相转换 首先,我们需要了解一个数学关系,即2^3=8,2^4=16,而八进制和十六进制是用这关系衍生而来的,即用三位二进制表示一位八进制,用四位二进制表示一位十六进制数。 接着,记住4个数字8、4、2、1(2^3=8、2^2=4、2^1=2、2^0=1)。 现在我们来练习二进制与八进制之间的转换...

江源区19866007758: 2进制、8进制、10进制、16进制、之间的转换怎么算啊 -
以矩复方:[答案] 十进制整数转换R进制(R可以是任何整数,比如3、5、7)整数,方法就是除R取余,十进制转八或十六进制方法类似转二进制,除以基数取余就行了,比如转八进制就除8,转十六进制就除16. 二进制和八进制、十六进制之间转换采用的是分组转换...

江源区19866007758: 二进制,八进制十进制十六进制之间数据转换怎么转? -
以矩复方: 1、二进制数、八进制数、十六进制数转十进制数 有一个公式:二进制数、八进制数、十六进制数的各位数字分别乖以各自的基数的(N-1)次方,其和相加之和便是相应的十进制数.个位,N=1;十位,N=2...举例:110B=1*2的2次方+1*2的1...

江源区19866007758: 计算机进制转换十进制125.625转换2进制、8进制十进制69.625转换2进制16进制8进制十进制127转换同上十六进制10A转换10进制八进制670转换10进制二... -
以矩复方:[答案] 十进制D,二进制B,八进制O,十六进制H125.625分成125和0.625先看整数部分125,用长除法,125除2得62(余1),62除2得31(余0),31除2得15(余1),15除2得7(余1),7除2得3(余1),3除2得1(余1),1除2得0(余1).除到0结...

江源区19866007758: 计算机进制转换(要步骤)二进制数1111111111转换为十进制数为八进制数37.21转换为二进制数为八进制数77.55转换为十六进制为十进制的100相当于八... -
以矩复方:[答案] 1111111111 =1*2^9+1*2^8+1*2^7+1*2^6+1*2^5+1*2^4+1*2^3+1*2^2+1*2^1+1*2^0 =512+256+128+64+32+16+8+4+2+1 =1023

江源区19866007758: 16;10;8;2各进制分别用哪些字母来表示?它们之间该怎么转换呢?举例说明,比如16转10;16转8;16转2;10转8;10转2;8转2;还有就是倒过来怎么转换,快!... -
以矩复方:[答案] 16进制用H 表示,8进制用O.1.二进制数、十六进制数转换为十进制数(按权求和) 二进制数、十六进制数转换为十进制数的规律是相同的.把二进制数(或十六进制数)按位权形式展开多项式和的形式,求其最后的和,就是其对应的十进制数——...

江源区19866007758: 二进制八进制十进制等之间转换 -
以矩复方: 计算机中常用几种不同的进位数制,包括二(八、十六)进制和十进制.二进制数据更容易用逻辑线路处理,更接近计算机硬件能直接识别和处理的电子化信息的使用要求,而使用计算机的人更容易接受十进制的数据类型.二者之间的进制转换...

江源区19866007758: 十进制.二进制.八进制.十六进制的互换 -
以矩复方: 进制的转换(1)将二.八.十六进制数转换为十进制数一般对r进制数按位权展开,再作运算.如:将10111.11B转换成十进制数 将327O转换为十进制 将32FH转换为十进制解:(10111.11)2=1*24+0*23+1*22+1*21+1*20+1*2-1+1*2-2=...

江源区19866007758: 带小数的二进制,八进制,十进制和十六进制数之间如何转化请举例,有统一的公式吗? -
以矩复方:[答案] 二进制八进制和十六进制之间很容易转换,比如10111110(二进制)转换为八进制是将二进制从尾(右)开始每三位组成一个8进制位,头上不足补0上述的八进制为276(八进制),二进制转换为十六进制是从尾开始每4为组成一个16进制位,头上...

江源区19866007758: 计算机中的二进制、八进制、十进制、十六进制是怎样转换的呢? -
以矩复方: 十进制转各进制要将十进制转为各进制的方式,只需除以各进制的权值,取得其余数,第一次的余数当个位数,第二次余数当十位数,其余依此类推,直到被除数小于权值,最后的被除数当最高位数. 一、十进制转二进制 如:55转为二进制 2|...

江源区19866007758: 二进制,八进制,十进制以及十六进制之间怎么互相转换?
以矩复方: 十进制转换N(2、8、16)进制:用十进制数除以N取余,结果从下往上倒着写.例:45转换二进制为:101101 N进制数转换十进制数方法:N进制数的每一位上的数字乘以N的M次方,然后把结果相加.(M为N进制数的位数,从零开始数) 例:二进制数101101,转换为十进制数为:1*2^5+1*2^3+1*2^2+1*2^0=45 将八进制数123转十进制数为:1*8^2+2*8+3*8^0=83 二、八、十六进制之间的互转可先转为十进制再转换

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网