一道计算机组成原理中有关规格化浮点数最大负数的疑惑

1 天前
 bler
如图所示





这道题中,最大负数抱有疑惑,假设尾数是 4 位,绝对值最小的数就是 -0.100 也就是- 2^-1

1.100 的按照求反加一的计算公式,我算出来原码还是 1.100 ,这不就是一个规格化的吗,
感觉学习的还是有问题,但是不知道问题在哪

有大佬能解释一下吗

主要是解释为啥是 2^-1 +2^-n,为什么加这个 2^-n
还是以 4 位尾数为例子,补码就是 0.101 ,原码就是 0.011

感觉脑子有点乱啊,我感觉是边界问题我没掌控好
706 次点击
所在节点    程序员
5 条回复
ltyj2003
1 天前
-0.001 大于-0.100
bler
1 天前
@ltyj2003 不是这个原因,其实这个问题的本质就是为什么-0.1 (二进制形式),为什么不是规格化的浮点数,为什么还要加个 2^-n ,我感觉我对规格化浮点数的概念好像理解错了
cybort
1 天前
因为你没有把小数部分的精度用完,你没发现同一个数移动下小数点位置有无数种表示形式吗
bler
1 天前
@cybort 但是需要规格化啊,尾数最高位必须为 1 啊,假设尾数是 4 位,如果是正数那么尾数最小为 0.100

如果是负数的情况下,尾数就不能为-0.100 ,变成了了-0.1001 了,加的这个 2^-n 有点把我搞蒙了,这是我有点不明白的地方
fengYH8080
20 小时 24 分钟前
大概了解你的疑惑了,你应该是概念混淆或者是不够牢固。 [双符号位补码尾数的规格化] 正数是 00.1xxxx ,负数是 11.0xxxx ,所以题目中 11.0111 补码转化为原码后 11.1001 ( 2^-1 + 2^-4 )是没问题的。而你举的例子 1.1000 这个是原码的规格化,你转换为补码 1.1000 后,正确的尾数规格化是 1.0100 。你理清下原码尾数的规格化和补码尾数的规格化的差异和原理。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1086703

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX