假设我有这个:
float i = 1.5
以二进制形式表示,此浮点数表示为:
0 01111111 10000000000000000000000
我将二进制文件分解为'signed','exponent'和'fraction'块。
我不明白这是如何代表1.5。
一旦减去偏差(127 - 127),指数为0,隐含前导的部分为1.1。
1.1如何无比地缩放= 1.5 ???
答案 0 :(得分:24)
首先考虑小数(基数为10):643.72是:
或600 + 40 + 3 + 7/10 + 2/100。
那是因为n 0 总是1,n -1 与1 / n相同(对于特定情况)和n -m 与1 / n m 相同(对于更一般的情况)。
同样,二进制数1.1是:
2 0 为1,而 -1 为一半。
在十进制中,小数点左边的数字有乘数1,10,100等小数点左边的标题,右边是1 / 10,1 / 100,1 / 1000(即10) 2 ,10 1 ,10 0 ,小数点,10 -1 ,10 -2 < / sup>,...)。
在base-2中,二进制点左边的数字有乘数1,2,4,8,16,左边是左边的数字。右边的数字有乘数1 / 2,1 / 4,1 / 8,依此类推右边。
因此,例如,二进制数:
101.00101
| | | |
| | | +- 1/32
| | +--- 1/8
| +------- 1
+--------- 4
相当于:
4 + 1 + 1/8 + 1/32
或:
5
5 --
32
答案 1 :(得分:7)
1.1二进制是1 + .5 = 1.5
答案 2 :(得分:0)
您想要阅读此内容 - IEEE 754-1985
实际标准为here
答案 3 :(得分:0)
尾数基本上被指数移位。
3 in binary is 0011
3>>1 in binary, equal to 3/2, is 0001.1