2025-11-20 05:47:51
原码用最高位表示符号,0正1负,剩下的位是数值。但这样0有正0和负0两种写法,不统一。补码把最高位的1既当符号又当数值,这样正数和负数都能用连续的数值表示,不用单独处理符号位。比如8位二进制,原码能表示-127到127,但补码多出-128这个值。因为补码把最高位的1既当符号又当数值,所以负数范围能多出最低的-128。
比如8位二进制,原码最高位1代表负数,但数值位不能全0,所以最负是-127(11111111)。补码通过给负数加1,让最高位1既能表示符号又能表示数值。这样-128就变成10000000,既当符号位又当数值位。数据统计显示,8位原码负数范围是-127到-1,共127个负数。补码负数范围是-128到-1,多出1个负数,正好对应最高位1的数值位。这种设计让加减法运算更统一,不用像原码那样处理符号位。比如-1加-1,原码要分开处理符号和数值,而补码直接算11111111+11111111=11111110(-2),运算更简单高效。
本题链接: