定义:
在计算机系统中,数值一律用补码来表示和存储。
表示方法:
正数的补码是其本身原码,也是其本身反码;负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后再+1,也可以认为是在其反码的基础上,再+1。
举例:(4位二进制数)
真值 | 原码 | 反码 | 补码 | 真值 | 原码 | 反码 | 补码 |
0 | 0000 | 0000 | 0000 | -0 | 1000 | 1111 | 0000 |
1 | 0001 | 0001 | 0001 | -1 | 1001 | 1110 | 1111 |
2 | 0010 | 0010 | 0010 | -2 | 1010 | 1101 | 1110 |
3 | 0011 | 0011 | 0011 | -3 | 1011 | 1100 | 1101 |
4 | 0100 | 0100 | 0100 | -4 | 1100 | 1011 | 1100 |
5 | 0101 | 0101 | 0101 | -5 | 1101 | 1010 | 1011 |
6 | 0110 | 0110 | 0110 | -6 | 1110 | 1001 | 1010 |
7 | 0111 | 0111 | 0111 | -7 | 1111 | 1000 | 1001 |
让我们尝试用补码进行加法运算!
例: 0001+0001=0010,1+1=2
0000+0000=0000,0+(-0)=0
0001+1111=0000,1+(-1)=0
由此我们知道,补码中-0不存在。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程