無符號右移位操作符「>>>」在將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
/*** 理解操作符的用法
* 這裡重點測試下為操作符的用法* *
* 建立日期 2007-10-26
*/public class test {
/*** @param args
*/public static void main(string args) {
//測試位操作符合
//關於左移位操作符「<<」將乙個bit串向左移位,帶符號右移位操作符「>>」將乙個bit串向右移位。
//左運算元是要移位的bit串,右運算元是要移動的位數。
//最後得出的結果是 左移位操作符「<<」 == 1×2的16次方==65536
plintln(1 << 16);
//最後得出的結果是 右移位操作符「>>」 == 1/2的16次方==0
plintln(1 >> 16);
//按位與」操作符「&」對兩個bit串按位進行邏輯與
plintln(10000 & 255);
//測試0xff,這些都是顏色相關的測試, 這些知識對於j2me 程式設計師來說是很有用處的
// 此處我有一些不明白的地方,為什麼要&0xff來操作呢
//測試顏色值錢,分拆後,等到對於的值,以為沒乙個值都在0~255之間
int red = (10000 >> 16) & 0xff;
int green = (10000 >> 8) & 0xff;
int blue = (10000) & 0xff;
plintln(red);
plintln(green);
plintln(blue);
理解java位操作符
最近的工作需要大量的採用位操作符的 其實專案本身沒有這樣的需求,不過現在我的職責是維護同事的 而這位同事的偏好是採用位操作,沒辦法學習了。無符號右移位操作符 在將bit串右移位時,從bit串的最左邊填充0,這和帶符號右移位操作符 不同。在將bit串右移位時,從bit串的最左邊填充原來最左邊的位。也就...
java 位操作符
位運算的應用場景 因為位運算的運算效率比直接對數字進行加減乘除高很多,所以當出現以下情景且對運算效率要求較高時,可以考慮使用位運算。情況1 輸入乙個int型的正整數,計算出該int型資料在記憶體中儲存時1的個數。例如輸入5,因為5 的二進位制表示為101,所以輸出為2.解題思路 普通方法是將5轉換成...
java位操作符
無符號右移位操作符 在將bit串右移位時,從bit串的最左邊填充0,這和帶符號右移位操作符 不同。在將bit串右移位時,從bit串的最左邊填充原來最左邊的位。也就是說,bit串原來最左邊的位是符號位,如果為1,則在帶符號右移時最左邊始終填充1 如果為0,則在帶符號右移時最左邊始終填充0。移位操作符的...