位運算子包括:
| 按位或 or,& 按位與 and,^ 按位異或 xor,~ 取反 not,<< 左移 left shift,>> 右移 right shift,等等。
二元 ^ 運算子是為整型和 bool 型別預定義的。對於整型,^ 將計算運算元的按位「異或」。對於 bool 運算元,^ 將計算運算元的邏輯「異或」;也就是說,當且僅當只有乙個運算元為 true 時,結果才為 true。
數值運算舉例
按位異或的3個特點:
(1) 0^0=0,0^1=1 0異或任何數=任何數
(2) 1^0=1,1^1=0 1異或任何數-任何數取反
(3) 1^1=0,0^0=0 任何數異或自己=把自己置0
例如:10100001^00010001=10110000
1 & 0 為0
0 & 0 為0
1 & 1 為1
1 | 0 為1
0 | 0 為0
1 | 1 為1
將第乙個運算元向左移動第二個運算元指定的位數,空出的位置補0。
左移相當於乘. 左移一位相當於乘2;左移兩位相當於乘4;左移三位相當於乘8。
x<<1= x*2
x<<2= x*4
x<<3= x*8
x<<4= x*16
同理, 右移即相反:
將第乙個運算元向右移動第二個運算元所指定的位數,空出的位置補0。
右移相當於整除. 右移一位相當於除以2;右移兩位相當於除以4;右移三位相當於除以8。
x>>1= x/2
x>>2= x/4
x>>3= x/8
x>>4=x/16
6. 復合賦值運算子
左移且賦值運算子
c <<= 2 等同於 c = c << 2
右移且賦值運算子
c >>= 2 等同於 c = c >> 2
按位與且賦值運算子
c &= 2 等同於 c = c & 2
按位異或且賦值運算子
c ^= 2 等同於 c = c ^ 2
按位或且賦值運算子
c |= 2 等同於 c = c | 2
int x = 4; int y = 6
;x ^=y;
y ^=x;
x ^=y;
console.writeline(x); //6
console.writeline(y); //
4
以上過程是這樣的:
(1)x ^= y,相當於x = x ^ y
x的二進位制是:00100
y的二進位制是:00110
x和y進行異或,結果是:00010
x轉換成十進位制後,x為:2
(2)y ^= x,相當於y = y ^ x
y的二進位制是:00110
x的二進位制是:00010
y和x進行異或,結果是:00100
y轉換成十進位制後,y為:4
(3)x ^= y,相當於x = x ^ y
x的二進位制是:00010
y的二進位制是:00100
x和y進行異或,結果是:00110
x轉換成十進位制後,x為:6
如果某個欄位的值都是二進位制相加的如 1+2+4+8
那麼user.groupvalues ^= 128; 如果有128就去掉128
user.groupvalues |= 128; 如果沒有128就加上128
C 位運算子
c 源自c,在提供高階語言便利的同時,也繼承了c在硬體程式設計方面的功能。因此適用於編寫裝置驅動和嵌入式大 c c 提供位邏輯運算子和移位運算子。二者只能用於整形和字元型。位運算子是對每位進行操作而不影響左右兩位,這有別於常規運算子 是將整個數進行操作的。一 位邏輯運算子 1 按位取反 將1變為0,...
C 位運算子
最近工作專案壓力不大,便繼續開始自學c 發現基礎知識忘記的差不多了.上網搜尋了一些基礎的不能再基礎的東西,溫故知新.c 位運算子 http www.diybl.com course 3 program c cppjs 20090403 163995.html c c 提供位邏輯運算子和移位運算子。二...
C 位運算子
位運算子作用於位,並逐位執行操作。和 的真值表如下所示 pq p qp q p q000 0001 0111 1110 1001 1假設如果 a 60,且 b 13,現在以二進位制格式表示,它們如下所示 a 0011 1100 b 0000 1101 a b 0000 1100 a b 0011 1...