机器码有三种表现形式:原码,反码和补码。
在java中所有的整数类型默认都是int类型的字面值,在计算机中以4个字节(32位)进行存储。
原码:一个正数转换为二进制位就是这个正数的原码,负数的绝对值转换为二进制位最高位符号位换为1,则是负数的原码。
正数的原码 = 反码 = 补码。
反码:负数的反码,原码的符号位不变,其余各位按位取反后既是该负数的反码。
补码:负数的补码,先得到反码,然后最低为加1,既是该负数的补码。
例子:
十进制正数 10 在java中占32位
原码: 00000000 00000000 00000000 00001010
反码: 00000000 00000000 00000000 00001010
补码: 00000000 00000000 00000000 00001010
十进制负数 -10
原码:10000000 00000000 00000000 00001010
反码:11111111 11111111 11111111 11110101
补码:11111111 11111111 11111111 11110110