如何在浮点二进制中规范化 110.110?

Posted

技术标签:

【中文标题】如何在浮点二进制中规范化 110.110?【英文标题】:How to normalise 110.110 in floating point binary? 【发布时间】:2021-08-08 22:14:02 【问题描述】:

我正在处理 A-Level Comp Sci 的一项任务,其中一个问题涉及使用 6 位尾数和 4 位指数对浮点表示中的数字 110.110 进行规范化。这样做的正确方法是什么?

我不能将小数点移动到尾数 (0.110110) 的开头,因为这会导致它超过 6 位,但我也不能将小数点移动到第一个 1 (1.10110),因为那样它会充当负号位。我是保持原样没有指数还是有什么我遗漏的东西?非常感谢。

【问题讨论】:

【参考方案1】:

在 IEEE-754 规范化数字中,尾数始终位于 1.0..2.0 范围内,二进制形式为 1.0000000 ... 1.1111111。点之前的位总是设置的,所以它被省略了,我们只存储点之后的部分尾数。

在你的情况下110.110 = 100 * 1.10110,所以尾数是10110(或者101100,如果需要6位)

指数100 可能存储为100 + 111 = 1011(类似于存储为e+127 的单精度指数)。

IEEE-754 浮点值中的符号位是单独的最左边位。不确定你的格式

所以我假设下一个二进制代码:

0 1011 101100
s eeee mmmmmm  

【讨论】:

@Alex Carr 注意我用指数纠正了错误 详细信息:IEEE-754 使用 significand 而不是 mantissa @chux - 恢复莫妮卡确实存在细微差别,而定义说The significand[1] (also mantissa[2] or coefficient,[1] sometimes also argument, or ambiguously fraction

以上是关于如何在浮点二进制中规范化 110.110?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中将浮点数列表输出到二进制文件

C中浮点数据类型的结构(二进制格式)是啥?

Java千百问_06数据结构(025)_用二进制如何表示浮点型数值

浮点型数据在内存中的存储

负零和正零是非规范化的吗?

计算机中的定点数与浮点数 浮点数用 正负位 幕数 数字部分来表示