在计算机科学和数字系统中,二进制和十进制也是两种常见的表示方式。二进制是一种基于2的数字系统,其中每个数字位只能是0或1,而十进制则是我们日常生活中最常用的数字系统,使用0到9的数字来表示值。
接下来,我们将详细介绍如何从二进制转换为十进制,并且将探讨如何从十进制转换回二进制的方法。
二进制转换为十进制:
必记住的内容1,二进制和十进制的转换规律:
二进制整数部分从右往左,用每个数去乘以2的相应次方,从0次方开始,结果依次相加。
二进制小数部分从左往右,用每个数去乘以2的相应负次方,从-1次方开始,结果依次相加。
记住上面的内容后,换算就相当于如鱼得水了。
例子1:110011
整数部分从右往左,用每个数去乘以2的相应次方,从0次方开始,结果依次相加
1乘以2的0次方=1
1乘以2的1次方=2
0乘以2的2次方=0
0乘以2的3次方=0
1乘以2的4次方=16
1乘以2的5次方=32
十进制的结果:1+2+0+0+16+32=51
例子2:11101.1010101
先算整数部分
整数部分从右往左,用每个数去乘以2的相应次方,从0次方开始,结果依次相加
1乘以2的0次方=1
0乘以2的1次方=0
1乘以2的2次方=4
1乘以2的3次方=8
1乘以2的4次方=16
十进制的结果:29
再算小数部分
二进制小数部分从左往右,用每个数去乘以2的相应负次方,从-1次方开始,结果依次相加。
1乘以2的负1次方=1/2=0.5
0乘以2的负2次方=0
1乘以2的负3次方=1/8=0.125
0乘以2的负4次方=0
1乘以2的负5次方=1/32=0.03125
0乘以2的负6次方=0
1乘以2的负7次方=1/128=0.0078125
十进制的结果:0.6640625
十进制的整合结果:29.6640625
例子3:01101110
0乘以2的0次方=0
1乘以2的1次方=2
1乘以2的2次方=4
1乘以2的3次方=8
0乘以2的4次方=0
1乘以2的5次方=32
1乘以2的6次方=64
0乘以2的7次方=0
十进制的结果:14+96=110
例子4:011111000.1110011
先算小数点左边的,从右往左算,0次方算起:
0x2的0次方=0
0x2的1次方=0
0x2的2次方=0
1x2的3次方=8
1x2的4次方=16
1x2的5次方=32
1x2的6次方=64
1x2的7次方=128
0x2的8次方=0
十进制的结果:248
再算小数点右边的,从左往右算,负1次方算起:
1x2的负1次方=0.5
1x2的负2次方=0.25
1x2的负3次方=0.125
0x2的负4次方=0
0x2的负5次方=0
1x2的负6次方=0.015625
1x2的负7次方=0.0078125
十进制的相加结果:0.8984375
十进制的整合结果:248.8984375
十进制转换为二进制:
必记住的内容2,十进制和二进制的转换规律:
十进制整数部分,采用除以2取余数法,逆序排列,即结果从下往上取余数。
详细步骤:
1.首先用2整除一个十进制整数,得到一个商和余数
2.然后再用2去除得到的商,又会得到一个商和余数
3.重复操作,一直到商为小于1时为止
4.然后将得到的所有余数全部从上往下排列起来,再颠倒过来,即为所算结果。
十进制小数部分,采用乘以2取整数法,顺序排列,即为结果。
详细步骤:
1.用2乘十进制小数,可以得到积,将积的整数部分取出
2.再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出
3.重复操作,直到积中的小数部分为零,此时0或1为二进制的最后一位,或者达到所要求的精度为止
4.若是小数的整数部分有大于0的整数,需要将整数部分和小数部分拆开,再单独转为二进制,再合在一起
例子1:87
十进制整数部分,采用除以2取余数法,逆序排列,即结果从下往上取余数。
87除以2 = 43余1 (87-43x2=1)
43除以2 = 21余1 (43-21x2=1)
21除以2 = 10余1 (21-10x2=1)
10除以2 = 5余0 (10-5x2=0)
5除以2 = 2余1 (5-2x2=1)
2除以2 = 1余0 (2-2x1=0)
1除以2 结果小于1 (取1)
二进制的结果:1010111
例子2:8.12658
先算整数部分
8除以2 = 4余0
4除以2 = 2余0
2除以2 = 1余0
1除以2 结果小于1 (取1)
二进制的结果1000
再算小数部分
十进制小数部分,采用乘以2取整数法,顺序排列,即为结果
0.12658乘以2 = 0.25316 (取整数部分0)
0.25316乘以2 = 0.50632 (取整数部分0)
0.50632乘以2 = 1.01264 (取整数部分1)
因小数的整数部分有大于0的整数,需要将整数部分和小数部分拆开,再单独转为二进制,再合在一起
0.01264乘以2 = 0.02528 (取整数部分0)
0.02528乘以2 = 0.05056 (取整数部分0)
0.05056乘以2 = 0.10112 (取整数部分0)
0.10112乘以2 = 0.20224 (取整数部分0)
0.20224乘以2 = 0.40448 (取整数部分0)
0.40448乘以2 = 0.80896 (取整数部分0)
0.80896乘以2 = 1.61792 (取整数部分1)
由于接下来计算量太大,我们只需精确到小数点后10位即可
二进制的结果:0010000001
二进制整合结果:1000.0010000001
例子3:37
37除以2=18余1
18除以2=9余0
9除以2=4余1
4除以2=2余0
2除以2=1余0
1除以2,取整数部分为1
二进制最终结果,从下往上取余数为:100101
例子4:40.15
先算整数部分
40除以2=20余0
20除以2=10余0
10除以2=5余0
5除以2=2余1
2除以2=1余0
1除以2,取整数部分为1
二进制最终结果,从下往上取余数为:101000
再算小数部分
0.15乘以2=0.3 取整数部分为0
0.3乘以2=0.6 取整数部分为0
0.6乘以2=1.2 取整数部分为1
0.2乘以2=0.4 取整数部分为0
0.4乘以2=0.8 取整数部分为0
0.8乘以2=1.6 取整数部分为1
因为小数的整数部分有大于0的整数,所以将整数部分和小数部分先单独转为二进制,再合在一起
0.6乘以2=1.2 取整数部分为1
同上理
0.2乘以2=0.4 取整数部分为0
0.4乘以2=0.8 取整数部分为0
0.8乘以2=1.6 取整数部分为1
我们取精确到小数点后10位即可,二进制结果为:0010011001
二进制整合结果就是:101000.0010011001
结束语录:
怎么样,二进制和十进制互转是不是超级简单。本来我是打算做图解的,想来想去还是用最朴素的方法。接下来我会分成四个部分来讲这个进制互相转换。分别是二进制和四进制 二进制和八进制 二进制和十进制 二进制和十六进制。
至于十进制转四进制 八进制 十六进制这个就不讲了,可以先其转换成二进制再进行换算即可。
进制转换工具:https://tool.lu/hexconvert
https://www.sojson.com/hexconvert.html