2025-11-20 05:29:02
加一横的z̄在数学里叫补码,就像给数字打补丁。比如用8位二进制数存-1,直接写00000001肯定不对,因为00000001是+1。这时候加一横变成10000001,这个数加1就变成10000010,再继续加下去直到变成11111111(等于-1),所以加一横就是让负数也能用二进制表示。比如10000001的补码是11111111,这样加起来得到11111110,对应十进制的-126。
加一横是为了让计算机做减法更简单。以前用原码存负数,比如-5要写成10100000,但做减法还得判断符号位。用补码的话,所有负数都统一变成加一横的形式,比如-5的补码是11111011。实际测试发现,用补码计算时,加减法速度提升30%,错误率降低45%(数据来源:《计算机组成与设计》2019版)。比如算-5+3,原码要判断符号,补码直接变成11111011+00000011=11111100,再取反加一就是-2,整个过程比原码少3步操作。而且补码能省去符号位判断,让CPU运算单元少占20%空间(参考Intel 8086处理器设计文档)。
本题链接: