使用 IEEE 754 浮点格式的 8 位版本来查找 32 以 10 为底的表示形式

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

使用以下 8 位版本的 IEEE 754 浮点格式(如实践中所示):表示以 10 为底的 32

Sign 1-bit    Expontent 3-bits    Mantissa 4-bits

我预计尾数位不够,因为我们有 3 位来表示指数。我们可以用8位来表示2^3=8个数字。偏差被认为是一半减 1,这样我们就可以表示正指数和负指数。

floating-point computer-science ieee-754
1个回答
0
投票

你是对的,如果其中一种编码保留为无穷大/NaN,并且指数值以 0 为中心,与 IEEE binary32 相同,则最高正指数将为 3(例如 2 位无符号或 3 -位有符号字段)。

而指数 = 3 表示 2^3 = 8 的乘数。最大尾数为

1 + 0xf / 16
= 1.9375,因此最大有限值为 15.5。

将 16 或更高转换为此格式会溢出到 +Inf。

如果格式使用指数 = 全一 (0b111) 表示有限值,没有任何 Inf/NaN 位模式(当位模式很少时这才有意义),则最大指数可能会高 1,允许 e=4。

(1 + 15/16) * 2^4  =  31

根据您处理溢出的方式,

32
可能会转换为
0x7F
(除了符号之外的所有位),舍入误差为1。它确实会溢出(除非您的指数编码不遵循正常的IEEE) 754 图案)。它会引发 FP 异常,但如果异常被屏蔽,那么您会得到一些位模式。 IEEE 754 有一个 Infinity 的位模式来处理这种情况,因此没有规则说明没有它该怎么做。

如果您希望

32
能够在不溢出的情况下表示,您将不得不牺牲一些负指数,改变偏差,以便 5 的指数是可编码的。


其他格式的工作方式有所不同,例如 Posit 具有逐渐溢出的功能,并且被设计为只需要很少的位(包括 8 位)即可使用。 (https://en.wikipedia.org/wiki/Unum_(number_format) / https://www.johndcook.com/blog/2018/04/11/anatomy-of-a-posit-number/ )

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