在Java中,无论是小数还是整数,他们都要带有符号(和C语言不同,C语言有无符号数)。首位就作为符号位。
原码
反码:
- 正数的反码是其原码本身
- 负数的反码是在其原码的基础上, 符号位不变,其余各个位取反
补码:
- 正数的补码就是其本身
- 负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1(即在反码的基础上+1,此时1000表示-8)
比如-7原码为1111,反码为1000,补码就是1001了,-6原码为1110,反码为1001,补码就是1010。运算:
1+(-1) = 0001 + 1111 = (1)0000 => +0 (现在无论怎么算,也不会有-0了)