Java位操作符使用總結

2021-07-10 15:07:32 字數 3482 閱讀 5363

由於在平時寫**時,不經常使用位操作符,然而,在看jdk的原始碼中,經常會遇到位操作符。為了避免每次都要去網上或者書上查一下位操作符的用法,特此,寫了這篇文章,用以備忘。

現在,言歸正傳。

按位與操作符(&)

如果兩個輸入位為1,則結果位也是1,否則,結果位為0。

int x = 12

; int y = 13

; int z1 = x&y

; system.out

.println(integer.tobinarystring(x));

system.out

.println(integer.tobinarystring(y));

system.out

.println(integer.tobinarystring(z1));

輸出結果為:

1100

1101

1100

按位或操作符(|)

如果兩個輸入位為0,則結果位為0,否則,結果位為1。

int x = 12

; int y = 13

; int z2 = x|y

; system.out

.println(integer.tobinarystring(x));

system.out

.println(integer.tobinarystring(y));

system.out

.println(integer.tobinarystring(z2));

輸出結果為:

1100

1101

1101

按位異或操作符(^)

如果兩個輸入位為1,那麼結果位為0;如果兩個輸入位為0,那麼結果位為0,否則,結果位為1。

int x = 12

; int y = 13

; int z3 = x^y

; system.out

.println(integer.tobinarystring(x));

system.out

.println(integer.tobinarystring(y));

system.out

.println(integer.tobinarystring(z3));

輸出結果為:

1100

1101

1

按位非操作符(~)

按位取反。

int x = 12

; int y = 13

; int z4 = ~x

; system.out

.println(integer.tobinarystring(x));

system.out

.println(integer.tobinarystring(z4));

輸出結果為:

1100

11111111111111111111111111110011

移位操作符

移位操作符只可用來處理整數型別

左移(<<)

按照操作符右側指定的位數向左移動,在低位補0。

int x = 12

; int y = 13

; int z5 = x

<<2

; system.out

.println(integer.tobinarystring(x));

system.out

.println(integer.tobinarystring(z5));

輸出結果為:

1100

110000

有符號數右移(>>)

有符號數右移位操作符使用「符號擴充套件」:若符號為正,則在高位插入0;若符號為負,則在高位插入1。

int x = 12

; int y = -13

; int z6 = x>>2

; int z7 = y>>2

; system.out

.println("x = "+integer.tobinarystring(x));

system.out

.println("x>>2 = "+integer.tobinarystring(z6));

system.out

.println("y = "+integer.tobinarystring(y));

system.out

.println("y>>2 = "+integer.tobinarystring(z7));

輸出結果為:

x = 1100

x>>2 = 11

y = 11111111111111111111111111110011

y>>2 = 11111111111111111111111111111100

無符號右移(>>>

無符號右移位操作符使用「0擴充套件」:無論正負,都在高位插入0。

int x = 12

; int y = -13

; int z8 = x>>>2

; int z9 = y>>>2

; system.out

.println("x = "+integer.tobinarystring(x));

system.out

.println("x>>>2 = "+integer.tobinarystring(z8));

system.out

.println("y = "+integer.tobinarystring(y));

system.out

.println("y>>>2 = "+integer.tobinarystring(z9));

輸出結果為:

x = 1100

x>>>2 = 11

y = 11111111111111111111111111110011

y>>>2 = 111111111111111111111111111100

java 位操作符

位運算的應用場景 因為位運算的運算效率比直接對數字進行加減乘除高很多,所以當出現以下情景且對運算效率要求較高時,可以考慮使用位運算。情況1 輸入乙個int型的正整數,計算出該int型資料在記憶體中儲存時1的個數。例如輸入5,因為5 的二進位制表示為101,所以輸出為2.解題思路 普通方法是將5轉換成...

java位操作符

無符號右移位操作符 在將bit串右移位時,從bit串的最左邊填充0,這和帶符號右移位操作符 不同。在將bit串右移位時,從bit串的最左邊填充原來最左邊的位。也就是說,bit串原來最左邊的位是符號位,如果為1,則在帶符號右移時最左邊始終填充1 如果為0,則在帶符號右移時最左邊始終填充0。移位操作符的...

理解java位操作符

最近的工作需要大量的採用位操作符的 其實專案本身沒有這樣的需求,不過現在我的職責是維護同事的 而這位同事的偏好是採用位操作,沒辦法學習了。無符號右移位操作符 在將bit串右移位時,從bit串的最左邊填充0,這和帶符號右移位操作符 不同。在將bit串右移位時,從bit串的最左邊填充原來最左邊的位。也就...