Java 原码、反码、补码 详解

1. 机器数

一个数在计算机中的二进制表现形式,叫做这个数的机器数。一个数的最高位表示符号,0是正数,1是负数。

2. 真值

因为机器数是带符号的,所以机器数不能表示一个数的真正的值。比如-1的机器数是:1000 0001,但是1000 0001转成10进制是81。-1的真值是:-0000 0001,机器数是把符号用0和1来表示。

3. 原码

原码就是符号位加上真值的绝对值。比如:8 原码是 0000 1000。-8 原码是 1000 1000。

4. 反码

正数的反码,就是其本身。而负数的反码,保持最高的符号位不变,其余位置取反。比如 8 反码和原码相同都是:0000 1000。而-8的反码则是:1111 0111。由此可以看出,一个负数的反码,是看不出它的数值的,只能转回原码才能计算出。

5. 补码

正数的补码,依旧是其本身。而负数的补码,是在原码基础上,符号位不变,其余位置取反再+1。比如:-8 原码:1000 1000,取反:1111 0111。再加1得到补码:1111 1000。

你可能感兴趣的:(Java 原码、反码、补码 详解)