位操作符是對數據按二進制位進行運算的操作符。C#位操作支持的數據類型是基本數據類型,如byte、short、char、int、long等,C#支持的位操作有如下幾種:
(1)按位與 &
(2)按位或 |
(3)按位取反 ~
(4)左移 <<
(5)右移 >>
(6)異或^
在C#中位操作同C的位操作沒有什么區別,位操作的速度相對較快,而且如果熟練的話,處理起來也相對方便,特別是在一些權限等相關的設置中,比如:用1、2、4、8、16、32、64分別代表查看、添加、編輯、修改、刪除、審批等權限值的時候,如果某個用戶的最終權限是多種權限值的疊加,用位操作來判斷是否具有某種權限是相當方便的了。
using System;
/*
* 作者:周公
* 說明:本程序用以說明在C#中如何進行位操作。
* 日期:2007-09-17
* */
public class BitAction
{
public static void Main(string[] args)
{
int[] power = new int[] { 1, 2, 4, 8, 16, 32, 64 };
int value = 126;
/*
* 1的二進制形式: 00000001
* 2的二進制形式: 00000010
* 4的二進制形式: 00000100
* 8的二進制形式: 00001000
* 16的二進制形式: 00010000
* 32的二進制形式: 00100000
* 64的二進制形式: 01000000
* 126的二進制形式:01111110
*/
for (int i = 0; i < power.Length; i++)
{
if ((value & power[i]) != 0)
{
Console.WriteLine("有power[{0}]={1}所代表的權限", i, power[i]);
}
}
Console.WriteLine("按位與:126&4={0}", value & 4);
Console.WriteLine("按位或:126|4={0}", value | 4);
Console.WriteLine("左移:126<<4={0}", value << 4);
Console.WriteLine("右移:126>>4={0}", value & 4);
Console.WriteLine("異或:126^4={0}", value ^ 4);
Console.WriteLine("按位取反:~126={0}", ~value);
Console.ReadLine();
}
}
運行結果:

//舉例說明
using System;
class MikeCat
{
public static void Main()
{
int a=6&3;
Console.WriteLine("a={0}",a);
//6的二進制是00000110,3的二進制是00000011,按位與后等于00000010, 即2。
int b=6|3;
Console.WriteLine("b={0}",b);
//6的二進制是00000110,3的二進制是00000011,按位或后等于00000111,即7
int c=~6;
Console.WriteLine("c={0}",c);
//6的二進制是00000110,按位取反后是11111001即-7
int d=6^3;
Console.WriteLine("d={0}",d);
//6的二進制是00000110,3的二進制是00000011,按位異或后等于00000101,即5
int e=6<<3;
Console.WriteLine("e={0}",e);
//6的二進制是00000110,左移三位后等于00101000,即48
int f=6>>2;
Console.WriteLine("f={0}",f);
//6的二進制是00000110,右移二位等于00000001,即1
}
}