美文网首页
C# " |= " 的用法

C# " |= " 的用法

作者: EnjoyOfCode | 来源:发表于2018-08-02 15:04 被阅读0次

|= 用于运算,

位(bit)是电子计算机中最小的数据单位。每一位的状态只能是0或1。

也就是说,位组合起来就是二进制。

| 代表位运算里的  按位或(OR)

按位或处理两个长度相同的二进制数,两个相应的二进位中只要有一个为1,该位的结果值为1。

贴学习中的一段代码,这段代码的意思就是根据路径去隐藏文件夹。

bool hide(string path)

        {

            if (path != string.Empty)

            {

                DirectoryInfo dir = new DirectoryInfo(path);

                dir.Attributes |= FileAttributes.System;

                dir.Attributes |= FileAttributes.Hidden;

                return true;

            }

            return false;

        }

在这段代码中,FileAttributes 是可以代表符合状态的枚举,    注:带有"[flags]位域"的枚举可以用来表达多种复合的状态,可以用 "或(|)"运算符进行组合,每个位域的枚举都不能是前几项值的复合值,通常用2的n次方来代表位域枚举。

位的运算: 

    按位或:

    规则:

    1|1=1

    1|0=1

    0|1=1

    0|0=0

参与运算的两数各对应的二进位,只要有一个是1,结果位就为1,参与运算的两个数均以补码出现。例如:9|5可写算式如下: 00001001|00000101 00001101 (十进制为13)可见9|5=13。

static void Main(string[] args)

        {

            int a = 5;

            int b = 9;

            var c = a | b;

            Console.WriteLine($"a={a},b={b},c={c}");

            Console.ReadKey();

        }

结果是:13;

按位与:

    和上述 按位或 的规则相反,例如:1&1=1;0&1=0;1&0=0;0&0=0;参与运算的两个数也都是以补码出现,如果把上述代码内的|改为&,那么结果就是1。

按位异或(XOR),在C#里用 ^ 来表示:

    参与运算的两数各对应的二进位,如果不相同,则为1,如果相同,则为0,参与运算的两个数均以补码出现。如果把上述代码内的|改为&,那么结果就是12。

取反(NOT),在C#里用 ~ 来表示:

    对每一位参与运算的二进制字符进行取反操作,为0则变为1,为1则变为0。例如: ~2 =   -3; 

好,我们继续位的运算,上述代码  dir.Attributes |= FileAttributes.System;    的意思是:dir.Attributes = dir.Attributes| FileAttributes.System

相关文章

网友评论

      本文标题:C# " |= " 的用法

      本文链接:https://www.haomeiwen.com/subject/xtojvftx.html