人计算习惯用原码计算,1byte = 8bits,第一位表示符号位,正常范围是[11111111,01111111]=[-127,+127];
而计算机语言用原码计算负数的加减会出错,设计出反码和补码,计算机用补码计算加减,-127=[10000001]补,-1=[11111111]补,-127+(-1) =1 [10000000]补,数据位和符号位发生进位,但是不是溢出,结果就是-128,也就是-0的补码=[10000000]补
- 数据高位和符号位同时进位或不进位时,不溢出
- 数据高位和符号位只有一个进位时,溢出