假设我有这个:
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。
这是因为 n0 始终为 1,n-1 与 1/n 相同(对于特定情况)并且 n-m 与 1/nm 相同(对于更一般的情况)。
同样,二进制数 1.1 是:
20 是一,2-1 是二分之一。
在十进制中,小数点左边的数字有乘数 1、10、100 等,从小数点向左,1/10、1/100、1/1000 向右(即 102、101、 100、小数点、10-1、10-2、...)。
在基数 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
关于types - IEEE-754 float 是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2706851/