原码、反码和补码都是整数的编码方法。
对于非负整数,三种编码的方式都是一样的。不同之处在于对于负数的编码。
原码是标志位置为1,其余位不变; 反码是标志位和其他所有位都取反; 补码是在反码的基础上+1;
示例如下:
+18 -18
原码 00010010 10010010 反码 00010010 11101101 补码 00010010 11101110不管是原码、反码、补码,都满足 -(-A)=A,这也是必然的。
原码 00010010 .......18 10010010 .......-18 00010010 .......-(-18) 反码 00010010 .......18 11101101 .......-18 00010010 .......-(-18) 补码 00010010 .......18 11101101 +00000001 11101110 .......-18 00010001 +0000000100010010 .......-(-18)
反码和补码也有用作动词的时候,即取反/取补。此时取反就是按位取反,取补就是按位取反之后+1