位運算符
位運算符作用於位,並逐位執行操作。&、 | 和 ^ 的真值表如下所示:
p | q | p&q | p|q | p^q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
假設如果 A = 60,且 B = 13,現在以二進制格式表示,它們如下所示:
A = 0011 1100
B = 0000 1101
A&B = 0000 1100
A | B = 0011 1101
A^B = 0011 0001
~A = 1100 0011
下表顯示了 C++ 支持的位運算符。假設變量 A 的值爲 60,變量 B 的值爲 13,則:
運算符 | 描述 | 實例 |
---|---|---|
& | 如果同時存在於兩個操作數中,二進制 AND 運算符複製一位到結果中。 | (A & B) 將得到 12,即爲 0000 1100 |
| | 如果存在於任一操作數中,二進制 OR 運算符複製一位到結果中。 | (A | B) 將得到 61,即爲 0011 1101 |
^ | 如果存在於其中一個操作數中但不同時存在於兩個操作數中,二進制異或運算符複製一位到結果中。 | (A ^ B) 將得到 49,即爲 0011 0001 |
~ | 二進制補碼運算符是一元運算符,具有”翻轉”位效果,即0變成1,1變成0。 | (~A ) 將得到 -61,即爲 1100 0011,一個有符號二進制數的補碼形式。 |
<< | 二進制左移運算符。左操作數的值向左移動右操作數指定的位數。 | A << 2 將得到 240,即爲 1111 0000 |
>> | 二進制右移運算符。左操作數的值向右移動右操作數指定的位數。 | A >> 2 將得到 15,即爲 0000 1111 |
來源於:http://www.runoob.com/cplusplus/cpp-operators.html
更多可以參考: 《c++位運算和邏輯運算》 作者:tzheng2008
地址:http://blog.csdn.net/tzheng2008/article/details/7257446