『计算机组成原理』二进制转化十进制的简便方法(小节)
我们要实现二进制转化十进制的通常方法是:
从最后一位开始算,依次列为第0、1、2...位,第n位的数(0或1)乘以2的n次方,得到的结果相加就是答案。
例如: 1101转十进制
从右向左 1*2º+0*2¹+1*2²+1*2³ = 13
简便解法:
数学中的进制即十进制数中,在一个数的整数部分的最右侧加0,每加一个0,这个数是前一个数的10倍,如25、250、2500...等等;在小数部分的最左侧每加一个0,这个数是前一个数的十分之一,如0.25、0.025、0.0025...等等
设想:二进制数中,在1的右侧(整数部分)或左侧(小数部分)每增加一个0,会是前一个 数的2倍或二分之一吗?
想想看:为什么只针对数码1来进行?
推理过程:分别把整数部分和小数部分转换成十进制来进行比较,按“乘权求和”的规则进行转换
整数部分:(1)2=(1)10;(10)2=(2)10;(100)2=(4)10;(1000)2=(8)10;(10000)2=(16)10..
小数部分:(0.1)2=(0.5)10;(0.01)2=(0.25)10;(0.001)2=(0.125)10;(0.0001)2=(0.0625)10;0.00001)2=(0.03125)...
这些转换过程,令你忆起了数制概念中关于位和值的定义吗?同样的数在不同的位置所代表的值是不同的,称为位值(或权值)。现在明白它的含义了吗?这条,是下面转换的最直接的依据。
排列:1、2、4、8、16...... 0.5、0.25、0.125、0.0625、0.03125......
结论:整数部分2倍;小数部分:二分之一即0.5倍
以上就是这种“另类”解法的理论依据,它另类吗?好,我们现在就来看看这种另类的方法到底是怎样实现数制之间转换的。同样以二进制数转换为十进制数中的例子来看
(1101.011)2=( )10
第一步:画出一串表示位的标记,如“×”,标记的多少根据题目中出现数字数目的多少而定,比方这个例子,整数部分有4位,小数部分三位,共7位.千万记得给小数点留个位置哦!
× |
× |
× |
× |
. |
× |
× |
× |
第二步:在相应的位上写上它所对应的值,值的大小整数部分从右到左依次为1、2、4、8、16...即后一个数是前一个数的2倍;小数部分从左到右依次为0.5、0.25、0.125、0.625...即后一个数是前一个数的0.5倍。
8 |
4 |
2 |
1 |
. |
0.5 |
0.25 |
0.125 |
× |
× |
× |
× |
. |
× |
× |
× |
第三步:将二进制数按位写在标记的下文
8 |
4 |
2 |
1 |
. |
0.5 |
0.25 |
0.125 |
× |
× |
× |
× |
. |
× |
× |
× |
1 |
1 |
0 |
1 |
. |
0 |
1 |
1 |
第四步:将位值为“1”的标记上方的数字相加,即为二进制数所对应的十进制数
8 + 4 + 1 + 0.25 + 0.125 =13.375
即:(1101.011)2 = (13.375)10
在实际的换算过程中,同学们只要直接写出第三步,然后用第四步来得出相应结果就可以了。