假设我有这个:
float i = 1.5
在二进制文件中,此float表示为:
0 01111111 10000000000000000000000
我打破了二进制代表'signed','exponent'和'fraction'块 .
我不明白的是这代表1.5 .
一旦减去偏差(127-127),指数为0,隐含前导的部分为1.1 .
1.1如何缩小= 1.5 ???
二进制1.1是1.5 = 1.5
你想读这个 - IEEE 754-1985
实际标准是here
尾数基本上被指数移位 .
3 in binary is 0011 3>>1 in binary, equal to 3/2, is 0001.1
首先考虑十进制(基数为10):643.72是:
(6 * 102)
(4 * 101)
(3 * 100)
(7 * 10-1)
(2 * 10-2)
或600 40 3 7/10 2/100 .
这是因为n0总是1,n-1与1 / n相同(对于特定情况),n-m与1 / nm相同(对于更一般的情况) .
同样,二进制数1.1是:
(1 * 20)
(1 * 2-1)
20为一,2-1为一半 .
在十进制中,小数点左边的数字有乘数1,10,100等小数点左边的 Headers ,右边是1 / 10,1 / 100,1 / 1000(即102,101, 100,小数点,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
4 回答
二进制1.1是1.5 = 1.5
你想读这个 - IEEE 754-1985
实际标准是here
尾数基本上被指数移位 .
首先考虑十进制(基数为10):643.72是:
(6 * 102)
(4 * 101)
(3 * 100)
(7 * 10-1)
(2 * 10-2)
或600 40 3 7/10 2/100 .
这是因为n0总是1,n-1与1 / n相同(对于特定情况),n-m与1 / nm相同(对于更一般的情况) .
同样,二进制数1.1是:
(1 * 20)
(1 * 2-1)
20为一,2-1为一半 .
在十进制中,小数点左边的数字有乘数1,10,100等小数点左边的 Headers ,右边是1 / 10,1 / 100,1 / 1000(即102,101, 100,小数点,10-1,10-2,......) .
在base-2中,二进制点左边的数字有乘数1,2,4,8,16,左边是左边的数字 . 右边的数字有乘数1 / 2,1 / 4,1 / 8,依此类推 .
那么,例如,二进制数:
相当于:
要么: