第三部分:二进制和十进制互相转换(包教包会)

在计算机科学和数字系统中,二进制和十进制也是两种常见的表示方式。二进制是一种基于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