什么是原码、反码、补码
在参考了众多大佬的回答之后,在这里做个笔记以便自己随时翻阅,强调!是总结!总结!。
首先要明白的就是,在计算机中,
1、正数是直接用原码表示的,如单字节5,在计算机中就表示为:
0000 0101。
2、负数以其正值的补码形式表示,如单字节-5,在计算机中表示为1111 1011。
3、正数的原、反、补码都是一样的,所以下面仅对负数进行讨论。
原码
- 负数的原码,是按照绝对值大小转换成的二进制数,然后最高位补1,表示符号。
00000000 00000000 00000000 00000101是 5的 原码。
10000000 00000000 00000000 00000101是 -5的 原码。
反码
- 负数的反码为对该数的原码除符号位外各位取反。
-5原码10000000 00000000 00000000 00000101各位取反
得反码:11111111 11111111 11111111 11111010。
补码
- 负数的补码就是在其反码的最后一位加1。
-5反码:11111111 11111111 11111111 11111010 + 1
得补码:11111111 11111111 11111111 11111011