二进制32浮点数(IEEE)的前导位

leading bit in binary32 float(IEEE)

本文关键字:IEEE 浮点数 二进制      更新时间:2023-10-16

问题的背景- binary32 float的规格

我的问题是关于假设,第一个(前导)位总是1,所以我们不需要存储它。这是事实,但它在数字上还有另一个作用……我们知道它从哪里开始。所以在提取了第一个非零比特之后,我们不知道数字从哪里开始,除非后面有另一个非零比特。

在那篇wiki文章中,他们使用数字(1.100011)二进制。分数是100011,我们可以毫无问题地把这个数算出来。但是,二进制(1.000011)又如何呢?取出1,得到000011,由于前导零不能存储在零初始化位域中,所以得到11。但是,当我们想要重建它时,会发生什么呢?我们得到1.11,这是错误的。

那么我们如何自由地提取任意数的前导位呢?

但是,二进制(1.000011)呢?取出1,得到000011,由于前导零不能存储在零初始化位域中,所以得到11。

实际上存储前导零。存储的是000011,当把1加回去时,就回到了开始的地方。存储前导零(在前导1被删除之后)是使它工作的原因。