V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bler
V2EX  ›  程序员

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

  •  
  •   bler · 1 天前 · 680 次点击
    如图所示





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

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

    有大佬能解释一下吗

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

    感觉脑子有点乱啊,我感觉是边界问题我没掌控好
    5 条回复    2024-11-05 17:15:56 +08:00
    ltyj2003
        1
    ltyj2003  
       1 天前 via Android
    -0.001 大于-0.100
    bler
        2
    bler  
    OP
       23 小时 39 分钟前
    @ltyj2003 不是这个原因,其实这个问题的本质就是为什么-0.1 (二进制形式),为什么不是规格化的浮点数,为什么还要加个 2^-n ,我感觉我对规格化浮点数的概念好像理解错了
    cybort
        3
    cybort  
       22 小时 35 分钟前 via Android
    因为你没有把小数部分的精度用完,你没发现同一个数移动下小数点位置有无数种表示形式吗
    bler
        4
    bler  
    OP
       22 小时 9 分钟前
    @cybort 但是需要规格化啊,尾数最高位必须为 1 啊,假设尾数是 4 位,如果是正数那么尾数最小为 0.100

    如果是负数的情况下,尾数就不能为-0.100 ,变成了了-0.1001 了,加的这个 2^-n 有点把我搞蒙了,这是我有点不明白的地方
    fengYH8080
        5
    fengYH8080  
       18 小时 13 分钟前
    大概了解你的疑惑了,你应该是概念混淆或者是不够牢固。 [双符号位补码尾数的规格化] 正数是 00.1xxxx ,负数是 11.0xxxx ,所以题目中 11.0111 补码转化为原码后 11.1001 ( 2^-1 + 2^-4 )是没问题的。而你举的例子 1.1000 这个是原码的规格化,你转换为补码 1.1000 后,正确的尾数规格化是 1.0100 。你理清下原码尾数的规格化和补码尾数的规格化的差异和原理。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5677 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 03:29 · PVG 11:29 · LAX 19:29 · JFK 22:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.