|
我们先来看看十六进制给你一个十进制,比如:6,如果将它转换成二进制数呢?
10进制数转换成二进制数,这是一个连续除2的过程:
把要转换的数,除以2,得到商和余数,
将商继续除以2,直到商为0。最后将所有余数倒序排列,得到数就是转换结果。
听起来有些糊涂?我们结合例子来说明。比如要转换6为二进制数。
“把要转换的数,除以2,得到商和余数”。
那么:
要转换的数是6, 6 ÷ 2,得到商是3,余数是0。 (不要告诉我你不会计算6÷2!)
“将商继续除以2,直到商为0……”
现在商是3,还不是0,所以继续除以2。
那就: 3 ÷ 2, 得到商是1,余数是1。
“将商继续除以2,直到商为0……”
现在商是1,还不是0,所以继续除以2。
那就: 1 ÷ 2, 得到商是0,余数是1 (拿笔纸算一下,1÷2是不是商0余1!)
“将商继续除以2,直到商为0……最后将所有余数倒序排列”
好极!现在商已经是0。
我们三次计算依次得到余数分别是:0、1、1,将所有余数倒序排列,那就是:110了!
6转换成二进制,结果是110。 好了!~
从以上看来,二进制的整数部分是这样的~而小数呢?
用2辗转相除至结果为1 将余数和最后的1从下向上倒序写就是结果
例如: 19.95 转2进制分为两个步骤。
1、小数点前
19/2=9余1
9/2=4 余1
4/2=2 余0
2/2=1 余0
1/2=0 余1
由下往上取余数 10011
2、小数点后
0.95*2 = 1.9 取整1
(1.9-1)*2 = 1.8 取整1
(1.8-1)*2 = 1.6 取整1
(1.6-1)*2 = 1.2 取整1
(1.2-1)*2 = 0.4 取整0
(0.4-0)*2 = 0.8 取整0
(0.8-0)*2 = 1.6 取整1
(1.6-1)*2 = 1.2 取整1
假设小数精度为8位,从上往下去则小数点后为 0.11110011
故19.95 转化为二进制为 10011.11110011
也就说十进制中的小数是要有限的位数才能转换成其他的有限个数的小数! 而 圆周率呢 无限不循环,这就意味着无论怎样转换始终还是无限不循环的小数啊!
同里 十二进制也是这样的 ~ 完毕!! |
|