众所周知,整数在内存中存储的是 补码 。
在涉及到对二进制位进行操作的程序时,清楚“三码”的关系和转换方式是非常重要的。
;
整数的二进制表示可以分为三种:原码 | 反码 | 补码
其中正整数的三码均相同,负数的三码则需要自己计算
原码
把一个整数按照正负直接翻译成二进制就是原码
例:3 的二进制原码表示为 “00000000 00000000 00000000 00000011”
-5 的二进制原码表示为 “10000000 00000000 00000000 00000011”
反码
原码符号位不变,其他位按位取反就是反码
例:-3 的二进制反码表示为 “11111111 11111111 11111111 11111100”
补码
反码+1
例: -3 的二进制补码表示为 “11111111 11111111 11111111 11111101”