存放signed类型的存储单元中,最左边第一位表示符号位,为0表示是正数,为1表示是负数。
计算机用补码的形式在存放整数的值。
正数的补码就是该二进制数本身,负数的补码要操作三步:
- 先取得该数的绝对值的二进制形式
- 再将第1步的值按位取反
- 最后将第2步的值加1
补码的发明是为了表示带符号数(整型)。
例如,假如 3 表示为 00000011,负数 -3 表示为 10000011,那么它们相加 3 - 3 结果是 10000110,不等于 00000000,就奇怪了。
那么补码的出现,负数 -3 的二进制除了最左边第一位的其他位按位取反得到 11111100,在 +1 得到 11111101。那么 3 - 3 相加就是 100000000,左边第一位溢出,自动舍弃就剩下 00000000了。