C语言数据存储,以及数据溢出的处理方式

以有符号的字符型数据来简述在数据溢出时系统是如何处理的:

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

原文链接:,转发请注明来源!