位操作符是对数据按二进制位进行运算的操作符。位操作是其他很多语言都支持的操作,如C、C++和Java等,C#也不例外支持位操作。注意位操作支持的数据类型是基本数据类型,如byte、short、char、int、long等,C#支持的位操作有如下几种:
·按位与 &
·按位或 |
·按位取反 ~
·左移 <<
·右移 >>
·异或^
在C#中位操作同C的位操作没有什么却别,位操作的速度相对较快,而且如果熟练的话,处理起来也相对方便,特别是在一些权限等相关的设置中,比如:用1、2、4、8、16、32、64分别代表查看、添加、编辑、修改、删除、审批等权限值的时候,如果某个用户的最终权限是多种权限值的叠加,用位操作来判断是否具有某种权限是相当方便的了。
举例说明:
usingSystem;
/*
*作者:周公
*说明:本程序用以说明在C#中如何进行位操作。
*日期:2007-09-17
**/
publicclassBitAction
{
publicstaticvoidMain(string[]args)
{
int[]power=newint[]{1,2,4,8,16,32,64};
intvalue=126;
/*
*1的二进制形式:00000001
*2的二进制形式:00000010
*4的二进制形式:00000100
*8的二进制形式:00001000
*16的二进制形式:00010000
*32的二进制形式:00100000
*64的二进制形式:01000000
*126的二进制形式:01111110
*/
for(inti=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();
}
}
/*
*作者:周公
*说明:本程序用以说明在C#中如何进行位操作。
*日期:2007-09-17
**/
publicclassBitAction
{
publicstaticvoidMain(string[]args)
{
int[]power=newint[]{1,2,4,8,16,32,64};
intvalue=126;
/*
*1的二进制形式:00000001
*2的二进制形式:00000010
*4的二进制形式:00000100
*8的二进制形式:00001000
*16的二进制形式:00010000
*32的二进制形式:00100000
*64的二进制形式:01000000
*126的二进制形式:01111110
*/
for(inti=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();
}
}
1083

被折叠的 条评论
为什么被折叠?



