存储时:为什么只需要一个符号位?
在内存(Memory)中,每一位空间都是宝贵的。
-
逻辑前提:在没有进行运算之前,数据是“静止”的,不存在溢出问题。
-
等效性:对于一个没有溢出的数,模4补码的两个符号位必然是相同的(
00或11)。既然两位始终一样,存两位就是浪费。 -
做法:因此,计算机在内存中只存一个符号位。这也就是为什么你在看内存单元时,它和普通的“模2补码”长得一模一样。
2. 运算时:为什么要扩展成两个符号位?
当你把数据从内存读入到 CPU 的 ALU(算术逻辑单元) 进行加减法时,情况就变了。
-
扩展动作:ALU 的输入端会有专门的电路,把内存传来的那一个符号位“复制”一份,变成两位。比如
0变成00,1变成11。 -
核心目的:捕捉“进位冲突”。
-
运算过程中,最高数值位可能会产生进位,这个进位会先冲进第一个符号位(低位符号位),但可能不会冲进第二个符号位(高位符号位)。
-
这样,原本相同的
00就会变成01,或者原本相同的11变成10。
-
-
结论:双符号位不是为了“存储”结果,而是为了“检测”过程。