具有2或1的补码尾数的浮点系统是否可以归一化?

时间:2017-12-17 12:20:27

标签: floating-point twos-complement ones-complement

据我所知,归一化的尾数是一个分数尾数,其中它是更重要的位,等于1/2的那个总是1.这样做是为了避免在系统上重复表示相同的数字。

但是如果Mantissa使用2的补语或1的补语系统会发生什么。在这种情况下,如果数字为负,强制该位为1将导致该位具有空值,使其无法实现其目的。 另一个解决方案是在数字为负数的情况下强制它为0,但我想这可能会变得复杂。 这让我想到,一个具有标准化2或1的补码尾数的系统是否存在?如果它们存在,它们如何工作?

1 个答案:

答案 0 :(得分:0)

  

可以对具有2或1的补码尾数的浮点系统进行归一化吗?

是的 - 所有类型的编码都是可能的。已经尝试了许多浮点编码 - 甚至可能是带有2或2的补码尾数的浮点编码。然而,最流行的浮点格式包含一个符号,一个无符号有效数和指数。

澄清一些(错误的)理解:

  

标准化的尾数是一个分数尾数,其中它是一个更重要的位,等于1/2的那个,总是1

注意:最好使用有效数字/重要而不是尾数

binary64这样的浮点格式区分了signifcand的值和它的编码。

有效数m的值是53位 - 通常被认为是二进制数,如B.bbb ... bbb。较低的52是直接编码的。最重要的一个B是派生出来的。当偏差指数不为0时,最高有效位为1(正常数字)。否则为0(次正常数字)。

该值的最高有效位并不总是1.编码的52位值的最高有效位也不总是1.

由于正常数字的最高有效位始终为1,因此该位不会被编码。它通常被认为具有1而不是1/2的值。虽然可以使用1/2,然后还需要调整许多描述格式的其他常量。

  

这样做是为了避免在系统上重复表示相同的数字。

是 - 但间接。良好的浮点格式的目标是以最小的空间编码许多不同的值。任何重复的陈述都会降低效率。没有或很少重复的表示是空间效率目标的结果

  

但是,如果Mantissa使用2的补语或1的补语系统会发生什么。在这种情况下,如果数字为负,强制该位为1将导致该位具有空值,使其无法实现其目的。

这很奇怪,因为"尾数",signicand是无符号的。然而,让我们将符号位和符号组合在一起作为符号幅度"尾数" {是sB.bbb...bbb。将此更改为某种54位2的补码意味着派生的B对于正数为1而对于负数为0。是的,强制B为1是一个糟糕的设计选择,并且都不是必需的。

  

另一个解决方案是在数字为负的情况下强制它为0,但我想这可能会变得复杂。

是的,对于正常数字的负数,它将为0。没有过于复杂的问题阻止了物理实现 - 实际上非常微不足道。然而,这种替代方法没有显示出价值。如果你有一大笔资金来实现具有强大浮点能力的下一个处理器 - 你会打赌常见的符号幅度浮点格式还是尝试2补码?

  

...是否存在具有标准化2或1的补语尾数的系统?

随着记忆的服务,这已经实现了。然而,对于minor或主要原因,今天常见的浮点格式不使用2的补码有效数。达尔文的技术压力导致了标志级浮点主导了整个行业。关键事件引发了IEEE 754-1985的问题。这详细说明了浮点的许多角落 - 但也是为了反映当时领先的硬件制造商目标。 2&1或3的补码尾数以及许多其他浮点格式missed the boat