Java 中~運算符

位非運算符(~)

運算規則:如果位爲0,結果是1,如果位爲1,結果是0.

比如:~37

在Java中,所有數據的表示方法都是以補碼的形式表示,如果沒有特殊說明,Java中的數據類型默認是int,int數據類型的長度是8位,一位是四個字節,就是32字節,32bit.

37轉爲二進制是100101

補碼後爲: 00000000 00000000 00000000 00100101

取反爲:    11111111   11111111   11111111   11011010

因爲高位是1,所以原碼爲負數,負數的補碼是其絕對值的原碼取反,末尾再加1。

因此,我們可將這個二進制數的補碼進行還原:

(1)首先,末尾減1得反碼:     11111111   11111111   11111111   11011001

(2)其次,將各位取反得原碼:00000000 00000000 00000000 00100110,

(3)此時二進制轉原碼爲38

(4)所以~37 = -38

快速計算

正數做非運算時:取反、-1,取反

負數做非運算時:取反、+1、取反

反碼

反碼的表示方法是:

正數的反碼是其本身

負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反.

[+1] = [00000001]原 = [00000001]反

[-1] = [10000001]原 = [11111110]反

補碼

補碼的表示方法是:

正數的補碼就是其本身

負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 最後+1. (即在反碼的基礎上+1)

[+1] = [00000001]原 = [00000001]反 = [00000001]補

[-1] = [10000001]原 = [11111110]反 = [11111111]補

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章