假设我有这个:
float i = 1.5
在二进制中,这个浮点数表示为:
0 01111111 10000000000000000000000
我分解了二进制来表示“有符号”、“指数”和“分数”块。
我不明白这是如何代表 1.5。
减去偏差 (127 - 127) 后,指数为 0,带隐式前导的小数部分为 1.1。
1.1如何缩放= 1.5???
假设我有这个:
float i = 1.5
在二进制中,这个浮点数表示为:
0 01111111 10000000000000000000000
我分解了二进制来表示“有符号”、“指数”和“分数”块。
我不明白这是如何代表 1.5。
减去偏差 (127 - 127) 后,指数为 0,带隐式前导的小数部分为 1.1。
1.1如何缩放= 1.5???
首先考虑十进制(以 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为一,2 -1为二分之一。
在十进制中,小数点左边的数字有乘数 1, 10, 100 等从小数点向左,1/10, 1/100, 1/1000 向右(即 10 2 , 10 1 , 10 0 , 小数点, 10 -1 , 10 -2 , ...)。
在 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.1 是 1 + .5 = 1.5
尾数基本上是由指数移动的。
3 in binary is 0011
3>>1 in binary, equal to 3/2, is 0001.1
你想读这个 - IEEE 754-1985
实际标准在这里