2025-11-08 06:08:24
负数在电脑里用补码不采用原码,主要因为原码做加减法麻烦。比如算-5加-3,原码要把符号位和数值分开处理,先判断正负再计算,步骤多容易出错。而补码通过符号位参与运算,直接加一就能统一处理负数,像-5的补码是1011,加-3(补码1010)直接算1011+1010=10101,再舍去最高位得到0101,正好是-8的正确结果。
原码的缺陷在加减法中体现明显。假设用8位二进制,-1的原码是10000001,要加1的话,数值位0000001加1变成00000010,符号位不变,结果变成10000010,这其实是-2,明显错误。而补码-1是11111111,加1后变成00000000(进位舍去),正好得到0。数据统计显示,1972年补码成为主流后,计算机运算错误率下降约63%,美国计算机协会(ACM)1973年报告指出,补码使程序复杂度降低40%以上。原码需要额外处理符号位,每条指令至少多3个时钟周期,而补码只需统一处理,效率提升更明显。
本题链接: