理解java位操作符

2021-05-27 14:37:46 字數 865 閱讀 8017

最近的工作需要大量的採用位操作符的**。其實專案本身沒有這樣的需求,不過現在我的職責是維護同事的**,而這位同事的偏好是採用位操作,沒辦法學習了。

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

移位操作符的例子見下表。

操作結果

說明00110010 << 2

11001000

右邊始終填充0

00110010 >> 2

00001100

結果一樣

00110010 >>> 2

00001100

10110010 >> 2

11101100

結果不同

10110010 >>> 2

00101100

「按位與」操作符「&」對兩個bit串按位進行邏輯與,「按位或」操作符「|」對兩個bit串按位進行邏輯或,「按位異或」操作符「^」對兩個bit串按位進行異或操作。運算規則如下表所示。

按位與按位或

按位異或

0 & 0 = 0

0 | 0 = 0

0 ^ 0 = 0

0 & 1 = 0

0 | 1 = 1

0 ^ 1 = 1

1 & 0 = 0

1 | 0 = 1

1 ^ 0 = 1

1 & 1 = 1

1 | 1 = 1

1 ^ 1 = 0

徹底理解java位操作符

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

java 位操作符

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

java位操作符

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