导言
在计算机的运行中,总是会不可避免的与二进制打交道,但是我们又通常使用十进制,所以十进制与二进制的转换就显得有些尤为重要了。小数的二进制与十进制的转换又跟整数略有不同,今天就了解一下小数的二进制与十进制的转换。
二进制的小数
首先看这样一个小数(100101.1101)2
我们吧上面的二进制小数分段得到如下结果
(100101)2.(1101)2
那么其中的整数部分和小数部分一目了然,有了上面的结果之后我们开始对上面的二进制小数进行转换。
二进制小数转十进制
二进制转十进制采用的是先把二进制小数按加权系数形式展开,再相加之后得到其十进制值。
整数部分
(100101)2=1∗25+0∗24+0∗23+1∗22+0∗21+1∗20=37
小数部分
(1101)2=1∗2−1+1∗2−2+0∗2−3+1∗2−4=0.8125
那么我们就得出了这个二进制小数的十进制形式37.8125
我们在将上面两式整合就得到了
(100101)2.(1101)2=1∗25+0∗24+0∗23+1∗22+0∗21+1∗20+1∗2−1+1∗2−2+0∗2−3+1∗2−4=37.8125
十进制小数转二进制
十进制转二进制同样需要将整数部分和小数部分分开进行处理,再拿上述数字37.8125
举例
先处理整数部分37
:
整数部分的处理方式是使用短除法,对整数除二取余,余数倒序排列得到的就是其二进制形式。
由上图短除法后得到整数部分的二进制形式
(37)10=(100101)2
再处理小数部分0.8125
:
小数部分的处理方式是对小数部分乘2取整,再去小数部分继续乘2取整,直到得到所需的位数或精度位置。
0.8125∗2=1.625 取整数部分1 留小数部分0.625
0.625∗2=1.25取整数部分1 留小数部分0.25
0.25∗2=0.5取整数部分0 留小数部分0.5
0.5∗2=1.0 取整数部分1 留小数部分0
将取得的整数部分顺序排列得到小数部分(1101)2
完成上述工作后,将整数部分小数部分相接的到37.8125的小数部分
(37.8125)10=(100101.1101)2
完成转换。