========================================
什么是补码?#
补码就是用正数来表示负数
========================================
例子#
- 例如,用 8 位二进制数表示 - 1 时,只需求得 1(00000001)的补码即可。将 00000001 的各位数的 0 取反成 1,1 取反成 0,然后再将取反结果 + 1,最后就转换成了 - 1(11111111)
- 再例如,表示 - 5,5 的二进制数为 0101,吧 0101 取反 + 1,转换成了 1011(-5)
=======================================
- 其实你真的不用管什么老师教你的概念:
正数的原反补都相同,负数的原反补要计算。
还有什么,计算机里存的都是补码,不是原码。
其实计算机里存的就是这样一些数字,只不过是用补码来表示负数而已。
=======================================
那为什么要用补码来表示负数呢?#
因为所有的十进制计算在计算机里都是二进制的运算,所有的减法在计算机里都是加法。如果不用补码,那么 1-1 会等于 - 2。比如
0001-------------(1)
1001-------------(-1)
0001+1001=
1010-------------(-2)
所以我们要用补码来表示负数
0001-------------(1)
1111-------------(-1)
0001+1111=
10000------0000-------(0)
=======================================
补码为什么叫补码?#
可能是因为一个数和它的补码相加为 0。其实你想想就知道,表示 -5 的时候是用 5 来表示的,那 - 5 与 5 本来就互为相反数。
=======================================
小 tips:#
由于一个数和它的补码互为相反数,所以补码 ---> 取反 + 1---> 转换之前的数。
-5(1011)------ 取反 + 1-------5(0101)