二进制二进制的小数位如何转为10进制,书上说乘二到小数位为零但是非5尾数的小数点比如:0.432永远乘不到小数尾数为0。请问如何计算?
如果一个数字用二进制表示为:
ABCDEF。GHIJ
则其十进制的值等于
A * 2^5 + B * 2^4 + C * 2^3 + D * 2^2 + E * 2^1 + F * 2^0 +
G + 2^(-1) + H * 2^(-2) + I * 2^(-3) + J * 2^(-4)
依此类推。
如二进制10。1001等于1 * 2^1 + 1 * 2^(-1) + 1 * 2^(-4),即2 + 0。5 + 0。0625 = 2。5625。
可以看到,所有以二进制精确表达的小数的小数位必定以5结尾。
如果要把十进制纯小数R的值表达为二进制,则需要这样运算:
1、n = 1...全部
如果一个数字用二进制表示为:
ABCDEF。GHIJ
则其十进制的值等于
A * 2^5 + B * 2^4 + C * 2^3 + D * 2^2 + E * 2^1 + F * 2^0 +
G + 2^(-1) + H * 2^(-2) + I * 2^(-3) + J * 2^(-4)
依此类推。
如二进制10。1001等于1 * 2^1 + 1 * 2^(-1) + 1 * 2^(-4),即2 + 0。5 + 0。0625 = 2。5625。
可以看到,所有以二进制精确表达的小数的小数位必定以5结尾。
如果要把十进制纯小数R的值表达为二进制,则需要这样运算:
1、n = 1
2、如果R = 2^(-n),则R = R - 2^(-n),二进制表达式的小数点后第n位为1。
4、n自加1。
5、如果R != 0,回到2。
以0。432为例:
0。432 0。25 0。01
0。432 - 0。25 = 0。182 > 0。125 0。
011
0。182 - 0。125 = 0。057 0。03125 0。01101
0。057 - 0。03125 = 0。02575 > 0。015625 0。
011011
0。02575 - 0。015625 = 0。010125 > 0。0078125 0。0110111
0。010125 - 0。0078125 = 0。0023125 0。
001953125 0。011011101
。。。
。收起