以有符号的字符型数据来简述在数据溢出时系统是如何处理的:
signed char有符号空间是两个字节,8位的一个变量,最高位是符号位,十进制范围在-128~127
在这个范围内输入-129
-129的原码存储空间不够需要借位为16位
1000 0000 1000 0001负数存储时需要存补码,即原码取反+1(取反时符号位不变)
1111 1111 0111 1110 +1
1111 1111 0111 1111 反码,
存储在一个8位有符号的空间时实际存储的内容为
0111 1111
在读取时,最高位为0,判断为正数,直接输出
0111 1111 =127
同理输入-130
1000 0000 1000 0010
1111 1111 0111 1101 +1
1111 1111 0111 1110
实际存储内容为
0111 1110 = 126
输入128
1000 0000原码,读取时判断高位为1,为负数需要-1,在取反,借位-1
1111 1111 反码 取反
1000 0000 =-0 =-128
-0在char类型中定义为-128