位操作符是对数据按二进制位进行运算的操作符。位操作是其他很多语言都支持的操作,如C、C++和Java等,C#也不例外支持位操作。注意位操作支持的数据类型是基本数据类型,如byte、short、char、int、long等,C#支持的位操作有如下几种:
· 按位与 & 
· 按位或 | 
· 按位取反 ~ 
· 左移 << 
· 右移 >>
· 异或^
在C#中位操作同C的位操作没有什么区别,位操作的速度相对较快,而且如果熟练的话,处理起来也相对方便,特别是在一些权限等相关的设置中,比如:用1、2、4、8、16、32、64分别代表查看、添加、编辑、修改、删除、审批等权限值的时候,如果某个用户的最终权限是多种权限值的叠加,用位操作来判断是否具有某种权限是相当方便的了。
InBlock.gif using System;
InBlock.gif
/*
InBlock.gif * 作者:周公
InBlock.gif * 说明:本程序用以说明在C#中如何进行位操作。
InBlock.gif * 日期:2007-09-17
InBlock.gif * */

InBlock.gif
public class BitAction
InBlock.gif{
InBlock.gif        
public static void Main( string [] args)
InBlock.gif        {
InBlock.gif                
int [] power = new int [] { 1, 2, 4, 8, 16, 32, 64 };
InBlock.gif                
int value = 126;
InBlock.gif                
/*
InBlock.gif                 * 1的二进制形式:    00000001
InBlock.gif                 * 2的二进制形式:    00000010
InBlock.gif                 * 4的二进制形式:    00000100
InBlock.gif                 * 8的二进制形式:    00001000
InBlock.gif                 * 16的二进制形式: 00010000
InBlock.gif                 * 32的二进制形式: 00100000
InBlock.gif                 * 64的二进制形式: 01000000
InBlock.gif                 * 126的二进制形式:01111110
InBlock.gif                 */

InBlock.gif                
for ( int i = 0; i < power.Length; i++)
InBlock.gif                {
InBlock.gif                        
if ((value & power[i]) != 0)
InBlock.gif                        {
InBlock.gif                                Console.WriteLine(
"有power[{0}]={1}所代表的权限" , i, power[i]);
InBlock.gif                        }
InBlock.gif                }
InBlock.gif                Console.WriteLine(
"按位与:126&4={0}" , value & 4);
InBlock.gif                Console.WriteLine(
"按位或:126|4={0}" , value | 4);
InBlock.gif                Console.WriteLine(
"左移:126<<4={0}" , value << 4);
InBlock.gif                Console.WriteLine(
"右移:126>>4={0}" , value & 4);
InBlock.gif                Console.WriteLine(
"异或:126^4={0}" , value ^ 4);
InBlock.gif                Console.WriteLine(
"按位取反:~126={0}" , ~value);
InBlock.gif                Console.ReadLine();
InBlock.gif        }
InBlock.gif}

运行结果:

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