存储时:为什么只需要一个符号位?

在内存(Memory)中,每一位空间都是宝贵的。

  • 逻辑前提:在没有进行运算之前,数据是“静止”的,不存在溢出问题。

  • 等效性:对于一个没有溢出的数,模4补码的两个符号位必然是相同的(0011)。既然两位始终一样,存两位就是浪费。

  • 做法:因此,计算机在内存中只存一个符号位。这也就是为什么你在看内存单元时,它和普通的“模2补码”长得一模一样。

2. 运算时:为什么要扩展成两个符号位?

当你把数据从内存读入到 CPU 的 ALU(算术逻辑单元) 进行加减法时,情况就变了。

  • 扩展动作:ALU 的输入端会有专门的电路,把内存传来的那一个符号位“复制”一份,变成两位。比如 0 变成 001 变成 11

  • 核心目的:捕捉“进位冲突”

    • 运算过程中,最高数值位可能会产生进位,这个进位会先冲进第一个符号位(低位符号位),但可能不会冲进第二个符号位(高位符号位)。

    • 这样,原本相同的 00 就会变成 01,或者原本相同的 11 变成 10

  • 结论双符号位不是为了“存储”结果,而是为了“检测”过程。