位運算基礎
阿新 • • 發佈:2018-11-08
xl_echo編輯整理,交流學習請加1280023003
百戰不敗,依不自稱常勝,百敗不頹,依能奮力前行。——這才是真正的堪稱強大!!
位操作是程式設計中對位模式按位或二進位制數的一元和二元操作。位運算子用來對二進位制位進行操作,C語言中六種位運算子:
- & 按位與
- | 按位或
- ^ 按位異或
- ~取反
<<
左移>>
右移
& 按位“與”操作符,如果兩個數的二進位制,相同位數都是1,則該位結果是1,否則是0.
5&4 5的二進位制是 0000 0000 0000 0101 4的二進位制是 0000 0000 0000 0100 則結果是 0000 0000 0000 0100
|按位“或”
操作符,如果兩個數的二進位制,相同位數有一個是1,則該位結果是1,否則是0
5 | 4
5的二進位制是 0000 0000 0000 0101
4的二進位制是 0000 0000 0000 0100
則結果是 0000 0000 0000 0101
“異或” ^
按位“異或”操作符,如果兩個數的二進位制,相同位數只有一個是1,則該位結果是1,否則是0
5 ^ 4
5的二進位制是 0000 0000 0000 0101
4的二進位制是 0000 0000 0000 0100
則結果是 0000 0000 0000 0001
“非”、“位非”(~)也稱為取反操作符
按位“非”操作符,屬於一元操作符,只對一個運算元進行操作,(其他按位操作符是二元操作符)。按位“非”生成與輸入位相反的值,——若輸入0,則輸出1,若輸入1,則輸出0。
5的二進位制是 0000 0000 0000 0101
則~5是 1111 1111 1111 1010
左移運算 >>
將數字轉換成為2進位制,左移2位就在二進位制資料的右邊補2個0,左邊的摒棄。
例如:4<<3
4的二進位制碼是 0000 0100
實現以上的左移3位結果
0010 0000
然後將二進位制轉換成為10進位制,結果是:32
使用java程式碼驗證
public static void main(String[] args) {
System.out.println(4 << 3);
}
輸出結果:
右移運算 >>
將數字轉換成為2進位制,右移2位就在二進位制資料的左邊補2個0,右邊的摒棄。
注意:這裡要考慮負數,如果是負數,則是補1,右邊的丟棄
例如:16>>3
4的二進位制碼是 0001 0000
實現以上的右移3位結果
0000 0010
然後將二進位制轉換成為10進位制,結果是:2
使用java程式碼驗證
public static void main(String[] args) {
System.out.println(16 << 3);
}
輸出結果:
無符號右移 >>>
將數字轉換成為2進位制,不考慮符號。右移2位就在二進位制資料的左邊補2個0,右邊的摒棄。