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

问题描述 投票:1回答:1

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

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

floating-point twos-complement ones-complement
1个回答
0
投票

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

是的 - 所有类型的编码都是可能的。已经尝试了许多浮点编码 - 甚至可能是具有2或1的补充尾数的编码。然而,最受欢迎的浮点格式包含符号,无符号有效数和指数。


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

标准化的尾数是一个分数尾数,其中它是更重要的位,等于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的补码尾数以及许多其他浮点格式missed the boat

© www.soinside.com 2019 - 2024. All rights reserved.