我的问题涉及IEEE 754标准
因此,我正在经历将十进制数转换为浮点数(IEEE 754标准(所需的步骤,但我不理解确定有偏指数的目的。我无法理解那一步,它到底是什么,为什么要这样做?
有人能解释一下这是什么吗?请记住,我刚刚开始攻读计算机科学转换硕士,所以我不会完全理解某些术语的选择!
如果你认为解释时间很长,请给我指一个正确的方向!
IEEE 32位浮点数字中的指数为8位。
在大多数情况下,如果我们想将带符号的量存储在8位字段中,我们会使用带符号的表示。0x80为-128,0xFF为-1,0x00为0,最大0x7F为127。
但指数不是这样表示的。将指数字段视为127太大的无符号8位数字。查看指数字段中的无符号值,然后减去127得到实际值。因此0x00表示-127。0x7F表示0。
对于64位浮点,字段为11位,偏置为1023,但其工作原理相同。
浮点数可以表示为(但不是(符号位s
、指数字段e
和尾数字段m
,其中e
是有符号整数,m
是整数的无符号分数。然后,该数字的值将被计算为(-1)^s • 2^e • m
。但这不允许代表重要的特殊情况
请注意,可以将指数增加±n
,并将尾数右移±n
,而不更改数字的值。这允许几乎一个数字来调整指数,使得尾数以1
开始(当然,一个例外是0
,一个特殊的FP数(。如果这样做,则具有标准化FP数,并且由于尾数现在总是从1
开始,因此不必将前导1
存储在存储器中,并且保存的位用于提高FP数的精度。因此,不存储尾数m
,而是存储尾数字段mf
。但是现在0
是如何表示的呢?那么,那些已经有最大或最小指数字段,但由于它们的规范化,不能变大或变小的FP数呢?那么";而不是一个数字s";例如CCD_ 16的结果
有偏指数的概念如下:如果将最大指数值的一半添加到指数字段,则得到有偏指数be
。要计算FP数的值,当然必须减去该偏差。但所有标准化FP数现在都有0 < be <(all 1)
。因此,这些特殊的有偏指数0
和(all 1)
现在可以保留用于特殊目的。
be = 0, mf = 0
:精确0be = 0, mf ≠ 0
:一个非规范化的数字,即mf
是没有前导1
的实数尾数be = (all 1), mf = 0
:无限be = (all 1), mf ≠ 0
:不是数字(NaN
(