C#学习笔记-----C#枚举中的位运算权限分配
一、基础知识
- 什么是位运算?
用二进制来计算,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
C#学习笔记-----C#枚举中的位运算权限分配的更多相关文章
- C#枚举中的位运算权限分配
什么是位运算 常用的位运算主要有与(&), 或(|)和非(~), 比如: & = ; | = ; ~ = ; 运用在权限设计中 先建立一个枚举表示所有的权限管理操作: [Flags] ...
- C#枚举中的位运算权限分配浅谈
常用的位运算主要有与(&), 或(|)和非(~), 比如: 1 & 0 = 0, 1 | 0 = 1, ~1 = 0 在设计权限时, 我们可以把权限管理操作转换为C#位运算来处理. 第 ...
- [学习笔记]Java代码中各种类型变量的内存分配机制
程序运行时,我们最好对数据保存到什么地方做到心中有数.特别要注意的是内存的分配.有六个地方都可以保存数据: (1) 寄存器 这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部.然而 ...
- Swift学习笔记 - 位移枚举的按位或运算
在OC里面我们经常遇到一些枚举值可以多选的,需要用或运算来把这些枚举值链接起来,这样的我们称为位移枚举,但是在swift里面却不能这么做,下面来讲解一下如何在swift里面使用 OC的位移枚举的区分 ...
- CLR_Via_C#学习笔记之枚举
CLR_Via_C#学习笔记之枚举 枚举类型(Enum)定义的一组"符号名称/值"配对:因为枚举类型使用程序更容易编写.阅读和维护,而且它是强类型: 枚举是值类型:由System. ...
- CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储
CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...
- 并发编程学习笔记(4)----jdk5中提供的原子类及Lock使用及原理
(1)jdk中原子类的使用: jdk5中提供了很多原子类,它会使变量的操作变成原子性的. 原子性:原子性指的是一个操作是不可中断的,即使是在多个线程一起操作的情况下,一个操作一旦开始,就不会被其他线程 ...
- [学习笔记] 在Eclipse中导入项目
参考前文:[学习笔记] 在Eclips 中导出项目 选择已经导出的文件: 导入之后,项目结构如下: 至此,完成.
- [学习笔记] 在Eclipse中导出可以直接运行的jar,依赖的jar中的类解压后放在运行jar中
前文: [学习笔记] 在Eclipse中导出可以直接运行的jar,依赖的jar打在jar包中 使用7z打开压缩包,查看所有依赖的jar都被解压以包名及class的方式存储在了运行jar中,此时jar的 ...
随机推荐
- 跟着百度学PHP[4]-OOP面对对象编程-2-属性和方法
简单的说 变量就是成员属性函数就是成员方法(方法有三:构造方法[即为__construct].成员方法.析构方法[__destruct]) 成员方法和成员属性都是可以加修饰词.比如封装性的方法或者属性 ...
- velocity使用知识总结
1.后台传递List<bean> ,前台循环获取 List<Lead> leads = leadService.getAllLeadLists(); mv.addObject( ...
- 三. 动态添加option选项
- Ubuntu14.04安装intel集显驱动
Ubuntu14.04安装intel集显驱动 标签(空格分隔): ubuntu linux 驱动安装 1.查看本机显卡型号 使用lspci命令来获取PCI接口硬件信息 o@o-pc:~$ lspci ...
- 1 python学习——python环境配置
1 python学习--python环境配置 要学习python语言,光看书看教程还是不好,得动手去写.当然,不管学习什么编程语言,最佳的方式还在于实践. 要实践,先得有一个Python解释器来解释执 ...
- centos7 & mysql
首先centos7很坑爹. 其次,在centos7上安装mysql更坑爹. 特此记录一次坑爹历程后的唯一出路. 安装mysql wget http://repo.mysql.com/mysql-com ...
- python 随笔(property & __class__)
1. 属性装饰器: property @property def errors(self): """ Returns a list of form.errors for ...
- 基于 REST 的 Web 服务:基础
代表性状态传输(Representational State Transfer,REST)在 Web 领域已经得到了广泛的接受,是基于 SOAP 和 Web 服务描述语言(Web Services D ...
- Java RuntimeException异常处理汇总
Java中所有异常的父类是Throwable类,在Throwable类下有两大子类: 一个是Error类,指系统错误异常,例如:VirtualMachineError 虚拟机错误,ThreadDeat ...
- ios swift 2 新的OptionSetType使用方法
http://www.rockhoppertech.com/blog/swift-2-optionsettype/?utm_source=tuicool 主要使用方法如下 components([NS ...