在Java中,無論是小數還是整數,他們都要帶有符號(和C語言不同,C語言有無符號數)。首位就作為符號位。
原碼
反碼:
- 正數的反碼是其原碼本身
- 負數的反碼是在其原碼的基礎上, 符號位不變,其余各個位取反
補碼:
- 正數的補碼就是其本身?
- 負數的補碼是在其原碼的基礎上, 符號位不變, 其余各位取反, 最后+1(即在反碼的基礎上+1,此時1000表示-8)
比如-7原碼為1111,反碼為1000,補碼就是1001了,-6原碼為1110,反碼為1001,補碼就是1010。運算:
1+(-1) = 0001 + 1111 = (1)0000 => +0 (現在無論怎么算,也不會有-0了)