您的位置:首页 > 编程语言 > C#

C#学习笔记-----C#枚举中的位运算权限分配

2015-09-12 17:04 761 查看
一、基础知识

什么是位运算?

用二进制来计算,1&2:这就是位运算,其实它是将0001与0010做位预算 得到的结果是 0011,也就是3

2.位预算有多少种?(我们就将几种我们权限中会用到的)

& 与运算 1&0=0 1&1=1 0&0=0

| 或运算 1|1=1 1|0=1 0|0=0

~ 非运算 ~1=0 ~0=1

二、如何与权限关联

1、逻辑是什么?

其实逻辑很简单,我们将每一位表示一种权限或一种枚举,1010(1代表具有当前位的权限;0代表不具有当前位的权限)

[FlagsAttribute]
public enum Category
{
[Description("动作")]
Motion = 1,

[Description("喜剧")]
Comedy = 2,

[Description("爱情")]
Love = 4,

[Description("科幻")]
Science = 8,

[Description("奇幻")]
Queer = 16,

[Description("灾难")]
Calamity = 32,

[Description("恐怖")]
Dracula = 64,

[Description("纪录")]
Documentary = 128,

[Description("犯罪")]
Crime = 256,

[Description("战争")]
War = 512,

[Description("冒险")]
Adventure = 1024,

[Description("动画")]
Cartoon = 2048,

[Description("剧情")]
Feature = 4096,

[Description("其他")]
Other = 8192
}


动作:0001 喜剧:0010 依次类推,每个枚举值必须是2的n次方

2、如何做运算?

叠加: 如果一部电影的类型即是 动作,也是喜剧

var category= Category.Motion|Category.Comedy =0011(3)

减法:如果要将这部电影,去掉喜剧类型

category&= ~Category.Comedy

0011&=~0010 0011&=1101 0001(动作)

判断:判断一部电影是否是动作片

(category& Category.Motion)==Category.Motion
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: