位運算是指按二進位制進行的運算。在程式中,常常需要處理二進位制位的問題。c/c++語言提供了6個位操作運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。
在實際應用中,建議用unsigned整型運算元,因為帶符號運算元可能因為不同機器結果不同。
c++和c的位操作運算子完全相同,但c++中增加了bitset標準庫來支援位集操作,具體內容請參考或者這些鏈結都是《c++ primer中文版》中的內容,大家也可以直接看書。
下面是c/c++位操作運算子列表,其中運算子優先順序為從上到下遞減,但<>優先順序相同。
c/c++位操作運算子
操作符功能用法
~位求反
~expr
<<
左移expr1 << expr2
>>
右移expr1 >> expr2&位與
expr1 & expr2
^位異或
expr1 ^ expr2|位或
expr1 | expr2
**示例如下:
1#include
<
iostream
>
2using
namespace
std;
3int
main()
運算結果如下:
~x=65532
~x=-4
x&y=1
x^y=6
x|y=7
x<<1=6
y>>1=2
**解釋如下:
short為16位整數,故x,y的二進位制表示如下:
x=3(00000000 00000011)
y=5(00000000 00000101)
~ 00000000 00000011
= 11111111 11111100(65532或者-4)(至於為什麼同樣的二進位制位表示的數不一樣,這與計算機的數值表示有關,具體原因可搜尋「補碼」)
00000000 00000011
& 00000000 00000101
= 00000000 00000001(1)
00000000 00000011
^ 00000000 00000101
= 00000000 00000110(6)
00000000 00000011
| 00000000 00000101
= 00000000 00000111(7)
00000000 00000011<<1
= 00000000 00000110(6)
00000000 00000101>>1
= 00000000 00000010(2)
&=^=
|= 這三個運算子就是跟+=差不多,
a &= b
就是a先和b與,然後再賦給a。
按位操作符
按位操作符 用來操作整數基本資料型別中的單個 bit 對兩個引數中對應的位執行布林代數計算,最終生成乙個結果 1.二元操作符 如果兩個輸入位都是1,則按位 與 操作符 生成乙個輸出位1,否則生成乙個輸出位0,如果兩個輸入位有乙個是1,則按位 或 操作符 生成乙個輸出位1,只有兩個輸入位都是0時,才會...
Java移位操作符以及按位操作符
按位操作符 針對兩個整數引數中的對應位執行布林代數運算,並生成乙個結果。按位與 如果兩個輸入位都是1則生成乙個輸出位1,否則生成乙個輸出位0。按位或 如果兩個輸入位只要有一位是1則生成乙個輸出位1.否則生成乙個輸出位為0。按位異或 如果兩個輸入位只有其中一位是1那麼生成輸出位1,否則生成乙個輸出位為...
C C 關於按位操作符
這一篇就簡單講下c 按位操作符使用方法。一 移位操作符 2位元組16位下 1.左移操作符 句法 value shift 將指定值的所有位向左移動指定位數並將結果返回 例如 int n1 568 int n2 n1 3 值也可以用字面值 int n2 568 3 std cout n2 std end...