C# 位運算符


位運算符包括:

| 按位或 OR,& 按位與 AND,^ 按位異或 XOR,~ 取反 NOT,<< 左移 Left Shift,>> 右移 Right Shift,等等。

1.異或運算(^)

二元 ^ 運算符是為整型和 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

2. & 運算符(與)

1 & 0 為0
0 & 0 為0
1 & 1 為1

3. | 運算符(或)

1 | 0 為1
0 | 0 為0
1 | 1 為1

 4. 左移 (<<)

  將第一個操作數向左移動第二個操作數指定的位數,空出的位置補0。
  左移相當於乘. 左移一位相當於乘2;左移兩位相當於乘4;左移三位相當於乘8。

  x<<1= x*2 
  x<<2= x*4 
  x<<3= x*8 
  x<<4= x*16

  同理, 右移即相反:

 5. 右移 (>>) 

  將第一個操作數向右移動第二個操作數所指定的位數,空出的位置補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

例子1:使用^ 按位異或交換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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM