11

假设我有这个:

float i = 1.5

在二进制中,这个浮点数表示为:

0 01111111 10000000000000000000000

我分解了二进制来表示“有符号”、“指数”和“分数”块。

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

减去偏差 (127 - 127) 后,指数为 0,带隐式前导的小数部分为 1.1。

1.1如何缩放= 1.5???

4

4 回答 4

28

首先考虑十进制(以 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为一,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
于 2010-04-25T01:52:46.503 回答
7

二进制的 1.1 是 1 + .5 = 1.5

于 2010-04-25T01:52:25.817 回答
1

尾数基本上是由指数移动的。

3 in binary is 0011
3>>1 in binary, equal to 3/2, is 0001.1
于 2010-04-25T02:27:08.597 回答
0

你想读这个 - IEEE 754-1985

实际标准在这里

于 2010-04-25T01:55:30.557 回答