IEEE-754浮点数如何工作

时间:2010-04-25 01:49:26

标签: types floating-point ieee-754

假设我有这个:

float i = 1.5

以二进制形式表示,此浮点数表示为:

0 01111111 10000000000000000000000

我将二进制文件分解为'signed','exponent'和'fraction'块。

我不明白这是如何代表1.5。

一旦减去偏差(127 - 127),指数为0,隐含前导的部分为1.1。

1.1如何无比地缩放= 1.5 ???

4 个答案:

答案 0 :(得分:24)

首先考虑小数(基数为10):643.72是:

  • (6 * 10 2 )+
  • (4 * 10 1 )+
  • (3 * 10 0 )+
  • (7 * 10 -1 )+
  • (2 * 10 -2

或600 + 40 + 3 + 7/10 + 2/100。

那是因为n 0 总是1,n -1 与1 / n相同(对于特定情况)和n -m 与1 / n m 相同(对于更一般的情况)。

同样,二进制数1.1是:

  • (1 * 2 0 )+
  • (1 * 2 -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