C语言补码的意义

统一零的编码

十进制数 原码
+0 0000 0000
-0 1000 0000
十进制数 反码
+0 0000 0000
-0 1111 1111
十进制数 补码
+0 0000 0000
-0 10000 0000 由于只用 8 位,最高位 1 丢弃,变为 0000 0000

减法运算转为加法运算

如:9 - 6

十进制数 原码
9 0000 1001
-6 1000 0110
利用原码计算:
0000 1001 + 1000 0110 = 1000 1111
运算结果:9 - 6 = -15 不正确
十进制数 补码
9 0000 1001
-6 1111 1010
利用补码计算:
0000 1001 + 1111 1010 = 10000 0011
运算结果:最高位 1 溢出,剩余的 8 位表示为 3,9 - 6 = 3,结果正确

你可能感兴趣的:(C\C++学习,c语言,开发语言)