在计算机科学中,数字的表示和计算通常采用二进制、八进制和十六进制等非十进制数制。然而,为了方便人类的阅读和理解,我们常常需要将这些非十进制数转换为十进制数。本文将详细介绍如何将非十进制数转换为十进制数。
一、二进制数转换为十进制数
二进制数是逢二进一的数制,它只有两个数字符号:0和1。将二进制数转换为十进制数的方法是:将二进制数按权展开,然后求和得到十进制数。具体步骤如下:
1. 写出二进制数的每一位数字,并将其转换为十进制数。
2. 将这些十进制数相加得到最终的十进制数。
例如,将二进制数1010100转换为十进制数的过程如下:
1010100
= 1×2^6 0×2^5 1×2^4 0×2^3 1×2^2 0×2^1 0×2^0
= 64 0 16 0 4 0 0
= 84
因此,二进制数10101010对应的十进制数是84。
二、八进制数转换为十进制数
八进制数是逢八进一的数制,它有八个数字符号:0、1、2、3、4、5、6、7。将八进制数转换为十进制数的方法是:将八进制数按权展开,然后求和得到十进制数。具体步骤如下:
1. 写出八进制数的每一位数字,并将其转换为十进制数。
2. 将这些十进制数相加得到最终的十进制数。
例如,将八进制数345转换为十进制数的过程如下:
345 (8进制)
= 3×8^2 4×8^1 5×8^0
= 240 32 5
= 277 (十进制)
因此,八进制数345对应的十进制数是277。
三、十六进制数转换为十进制数
十六进制数是逢十六进一的数制,它有十六个数字符号:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。将十六进制数转换为十进制数的方法是:将十六进制数按权展开,然后求和得到十进制数。具体步骤如下:
1. 写出十六进制数的每一位数字,并将其转换为十进制数。需要注意的是,十六进制的字母A-F分别对应于十进制的10-15。
2. 将这些十进制数相加得到最终的十进制数。
例如,将十六进制数AF3转换为十进制数的过程如下:
AF3 (十六进制)
= A×16^2 F×16^1 3×16^0
= 256 240 3
= 509 (十进制)
因此,十六进制数AF3对应的十进制数是509。
四、十进制转其他进制
我们可以使用除法的方法将十进制数转换为其他进制数。具体来说,我们将十进制数除以目标进制的基数,并记录余数和商。然后我们将商继续除以目标进制的基数,并重复记录余数和商的过程,直到商为0为止。在记录余数的过程中,我们需要特别注意余数的顺序,因为不同进制的权值不同。
最后,我们将所有记录的余数按照从右到左的顺序排列,并补全0或1,即可得到目标进制数。
例如:1000转二进制。
1000(被除数)÷2(除数)=500(商)......余数:0
500(被除数)÷2(除数)=250(商)......余数:0
250(被除数)÷2(除数)=125(商)......余数:0
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
把余数以倒序排列成横列字串:1111101000(2)
例如:10进制转换8进制。
1000(被除数)÷8(除数)=125(商)......余数:0
125(被除数)÷8(除数)= 15(商)......余数:5
15(被除数)÷8(除数)= 1(商)......余数:7
1(被除数)÷8(除数)= 0(商)......余数:1
把余数以倒序排列成横列字串:1750(8)
例如:10进制转换16进制。
1000(被除数)÷16(除数)= 62(商)......余数:8
62(被除数)÷16(除数)= 3(商)......余数:14
3(被除数)÷16(除数)= 0(商)......余数:3
把余数以倒序排列成横列字串:3E8(16)
五、二进制转其他进制
1 位八进制数相当于 3 位二进制数,因此二进制数转换成八进制数的规则为:“三位并一位”,1位 16 进制数相当于4 位二进制数,因此二进制转换成十六进制数的规则为:“四位并一位”。
例如:2进制转换8进制。
因为2的3次方等于8,所以把2进制字串拆分为3位2进制数表示一位八进制数。
即将2进制数分解成3位2进制数,用3位2进制按权相加去凑这位八进制数,小数点位置照旧。
1111101000拆为:000 表示第一位8进制数
1111101000拆为:101 表示第二位8进制数
1111101000拆为:111 表示第三位8进制数
1111101000拆为:001 表示第四位8进制数//注:不足3位添0补充
0*2^0 0*2^1 0*2^2=0 //第一位8进制数
1*2^0 0*2^1 1*2^2=5 //第二位8进制数
1*2^0 1*2^1 1*2^2=7 //第三位8进制数
1*2^0 0*2^1 0*2^2=1 //第四位8进制数
把余数以倒序排列成横列字串:1750(8)
例如:2进制转换16进制。
因为2的4次方等于16 ,所以把2进制字串拆分为4位2进制数表示一位16进制数。
1111101000拆为:1000 表示第一位16进制数
1111101000拆为:1110 表示第二位16进制数
1111101000拆为:0011 表示第三位16进制数//注:不足4位添0补充
0*2^0 0*2^1 0*2^1 1*2^3=8 //第一位16进制数
0*2^0 1*2^1 1*2^2 1*2^3=14 //第二位16进制数
1*2^0 1*2^1 0*2^2 0*2^3=3
把余数以倒序排列成横列字串:3E8(16)
六、八进制转其他进制
例如:8进制转换2进制。
取一分三法,即将一位8进制数分解成3位2进制数,用3位2进制,按权相加去凑这位八进制数,小数点位置照旧。
1750(8)=1 =001(参照对照表)
1750(8)=7 =111(参照对照表)
1750(8)=5 =101(参照对照表)
1750(8)=0 =000(参照对照表)
把余数以顺序排列成横列字串:1111101000(2)//注:开头为0则省略
例如:8进制转换10进制。
按权相加法,即将八进制每位上的数乘以位权,然后相加之和即是十进制数。
1750(8)=0*8^0 5*8^1 7*8^2 1*8^3=0 40 448 512=1000(10)
例如:8进制转换16进制。
8进制先转换成10进制或者2进制再转换成16进制。
七、十六进制转其他进制
例如:16进制转换2进制。
方法1:
即将一位16进制数分解成4位2进制数,用4位2进制按权相加去凑这位2进制数,小数点位置照旧。
方法2:
转换成10进制再转换成2进制。
例如:16进制转换8进制。
先转换2进制或10进制再转换成八进制。
例如:16进制转换10进制。
十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方,以此类推。
所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X 小于等于 15,即:F)表示的大小为 X * 16的N次方。//注: A=10 B=11 C=12 D=13 E=14 F=15
3E8(16)=8*16^0 14*16^1 3*16^2=8 224 768=1000(10)