繁体   English   中英

IEEE-754浮点数如何工作

[英]how IEEE-754 floating point numbers work

假设我有这个:

float i = 1.5

用二进制表示,该浮点数表示为:

0 01111111 10000000000000000000000

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

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

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

1.1如何不按比例缩放= 1.5?

首先考虑小数(以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,...)。

在以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

实际标准在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM