原码 反码 补码
原码反码补码三种表示方法,均有符号位和数值位
符号位 为 0 表示正,为 1 表示负
// 如 int i = -1;
int i = -1;
// 1 0000000000000000000000000000001
// 符号位 数值位
负整数
int a = -1
// -1 的原码
1000 0000 0000 0000 0000 0000 0000 0001
// -1 的补码
1111 1111 1111 1111 1111 1111 1111 1110
// -1 的补码
1111 1111 1111 1111 1111 1111 1111 1111
原码就是将整数按二进制形式表示出来
如 -1 的符号位为 1,数值位为 000 0000 0000 0000 0000 0000 0000 0001
反码 符号位不变,其他位依次按位取反
如 -1 符号位不变,数值位取反得到1111 1111 1111 1111 1111 1111 1110
补码 反码+1得到补码
// 如 -1
1111 1111 1111 1111 1111 1111 1111 1110
+ 1
111111111111111111111111111111111111111
正整数
正整数原码,反码,补码相同