欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#中的位操作小结

程序员文章站 2024-02-25 17:52:33
位操作符是对数据按二进制位进行运算的操作符。位操作是其他很多语言都支持的操作,如c、c++和java等,c#也不例外支持位操作。注意位操作支持的数据类型是基本数据类型,如b...

位操作符是对数据按二进制位进行运算的操作符。位操作是其他很多语言都支持的操作,如c、c++和java等,c#也不例外支持位操作。注意位操作支持的数据类型是基本数据类型,如byte、short、char、int、long等,c#支持的位操作有如下几种:

•按位与 &
•按位或 |
•按位取反 ~
•左移 <<
•右移 >>
•异或^

在c#中位操作同c的位操作没有什么区别,位操作的速度相对较快,而且如果熟练的话,处理起来也相对方便,特别是在一些权限等相关的设置中,比如:用1、2、4、8、16、32、64分别代表查看、添加、编辑、修改、删除、审批等权限值的时候,如果某个用户的最终权限是多种权限值的叠加,用位操作来判断是否具有某种权限是相当方便的了。

举例说明:

复制代码 代码如下:

using system;

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();
    }
}