十进制小数部分转化为2进制 为什么相乘??

10进制——>2进制
整数部分:重复相除2的
小数部分:重复相乘2的

为什么不一样???
查了好久才发现原来本质上是一样的…

假设一个十进制数 B
其对应的二进制数为 B= a20+b21+c22+.d2…

这个时候我们将10进制转为2进制的时候实际上就是求abcd的值

那么此时当用B除2的时候 相当对 a20+b21+c22+.d2…这个等式除2

相当于 a20/2 又因为a是2进制数不是0就是1 ,所以必然有一个余数 a存在。而等式剩下的部分b21+c22+.d2… 对应的2的幂也应该-1. 那么B/2的无限除2就能够得到abcd所有的数。

十进制数的小数此时用C表示 C是一个小数 。同理C也等于一个二进制的小数
C=a2-1+b2-2+c2-3+d…
会发现如果我们想要一个得到这个abcd…的话 必须要不停的
乘2才能把每一个2^-x次方化解。
同时由于越靠前越大所以不用倒叙直接就能得到2进制数abcd…

**为什么不能准确用2进制数准确表示10进制的小数部分?
整数部分:
因为整数除2能出尽

小数部分:
一个小数乘以2不一定能得到,一个小数部分是0的整数。
以0.2为例子:
0.2x2=0.4…0
0.4x2=0.8…0
0.8x
2=1.6…1
0.6x2=1.2…1
0.2x
2=0.4…0
.
.
.
.

.又回来了 所以不能够准确表示

原来都是一样的

上一篇:2021-03-17


下一篇:SQL如何实现Excel的分列功能(按指定符号进行分割)?