C 位運算子

2022-03-08 08:28:29 字數 1750 閱讀 6269

位運算子包括:

| 按位或 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...