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

Use the 8-bit version of the IEEE 754 floating point format to find the representation of 32 to the base 10

提问人:Ajb030603 提问时间:11/1/2023 最后编辑:GSergAjb030603 更新时间:11/1/2023 访问量:56

问:

使用以下 8 位版本的 IEEE 754 浮点格式,如实际情况所示:表示 32 到基数 10

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

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

浮点 计算机科学 IEEE-754

评论

0赞 Some programmer dude 11/1/2023
欢迎使用 Stack Overflow。请阅读帮助页面,参加 SO 导览,并阅读如何提问。另外,请阅读有关如何编写“完美”问题的信息,尤其是其清单。然后,请编辑您的问题以改进它。比如问我们一个问题,或者描述你遇到的问题以及你需要什么帮助。

答:

2赞 Peter Cordes 11/1/2023 #1

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

指数 = 3 表示 2^3 = 8 的乘数。最大尾数为 = 1.9375,因此最大有限值为 15.5。1 + 0xf / 16

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

如果格式使用指数 = all-1 (0b111) 作为有限值,并且没有任何 Inf/NaN 位模式(当位模式如此之少时,这是有道理的),则最大指数可能会高 1,允许 e=4。

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

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

如果你想在不溢出的情况下表示,你必须牺牲一些负指数,改变偏差,使指数 5 是可编码的。32


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