2025-11-20 05:54:07
原码用符号位和数值位分开表示正负数,比如8位原码最高位是符号位,剩下7位是数值。负数符号位为1,数值位要取绝对值,所以-128的绝对值是128,但7位二进制最大只能到127,因此原码无法表示-128。
补码通过让符号位参与数值运算来扩展表示范围。负数的补码等于其绝对值的二进制取反后加1,再在符号位补1。比如-128的绝对值是128,但8位二进制最大是255,取反后是127(二进制01111111),加1变成10000000,符号位自动补1成10000000。这样8位补码能表示-128到127,比原码多一个-128。数据对比:原码8位范围-127~127,补码是-128~127,多出-128这个数。运算时符号位和数值位统一处理,比如-1的补码是11111111,加1后变成00000000并舍弃进位,结果正确,而原码需要额外处理符号位。
本题链接: