2025-11-13 10:45:40
补码为什么范围大呢?因为负数表示更灵活,比如8位二进制用补码能存-128到127,比原码多一半数据。运算时不用额外处理符号位,直接加减都方便。而补码再取补码会变回原码,比如-1的补码是11111111,再取补码就是00000000,但符号位保留的话就是0的原码。
比如8位二进制,原码范围是-127到127,最高位只能存0或1。补码通过加1取反实现负数,比如-1的原码是10000001,取反加1变成11111111。再取补码时,先加1变成10000000,再取反得到01111111,但符号位恢复为0,所以最终是00000000的原码。这样两次补码操作就能回到原数,既扩展了范围又简化了运算。数据存储效率提高后,计算机处理整数时能存更多值,比如16位补码范围-32768到32767,比原码多出32768个负数。运算时符号位参与计算,比如-5+3直接变成11111110+00000011=11111111(-2),无需单独处理符号,效率比原码高50%以上。
本题链接: