一、基础知识

  1. 什么是位运算?

用二进制来计算,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#枚举中的位运算权限分配的更多相关文章

  1. C#枚举中的位运算权限分配

    什么是位运算 常用的位运算主要有与(&), 或(|)和非(~), 比如: & = ; | = ; ~ = ; 运用在权限设计中 先建立一个枚举表示所有的权限管理操作: [Flags] ...

  2. C#枚举中的位运算权限分配浅谈

    常用的位运算主要有与(&), 或(|)和非(~), 比如: 1 & 0 = 0, 1 | 0 = 1, ~1 = 0 在设计权限时, 我们可以把权限管理操作转换为C#位运算来处理. 第 ...

  3. [学习笔记]Java代码中各种类型变量的内存分配机制

    程序运行时,我们最好对数据保存到什么地方做到心中有数.特别要注意的是内存的分配.有六个地方都可以保存数据: (1) 寄存器 这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部.然而 ...

  4. Swift学习笔记 - 位移枚举的按位或运算

    在OC里面我们经常遇到一些枚举值可以多选的,需要用或运算来把这些枚举值链接起来,这样的我们称为位移枚举,但是在swift里面却不能这么做,下面来讲解一下如何在swift里面使用 OC的位移枚举的区分 ...

  5. CLR_Via_C#学习笔记之枚举

    CLR_Via_C#学习笔记之枚举 枚举类型(Enum)定义的一组"符号名称/值"配对:因为枚举类型使用程序更容易编写.阅读和维护,而且它是强类型: 枚举是值类型:由System. ...

  6. CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储

    CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...

  7. 并发编程学习笔记(4)----jdk5中提供的原子类及Lock使用及原理

    (1)jdk中原子类的使用: jdk5中提供了很多原子类,它会使变量的操作变成原子性的. 原子性:原子性指的是一个操作是不可中断的,即使是在多个线程一起操作的情况下,一个操作一旦开始,就不会被其他线程 ...

  8. [学习笔记] 在Eclipse中导入项目

    参考前文:[学习笔记] 在Eclips 中导出项目 选择已经导出的文件: 导入之后,项目结构如下: 至此,完成.

  9. [学习笔记] 在Eclipse中导出可以直接运行的jar,依赖的jar中的类解压后放在运行jar中

    前文: [学习笔记] 在Eclipse中导出可以直接运行的jar,依赖的jar打在jar包中 使用7z打开压缩包,查看所有依赖的jar都被解压以包名及class的方式存储在了运行jar中,此时jar的 ...

随机推荐

  1. 跟着百度学PHP[4]-OOP面对对象编程-2-属性和方法

    简单的说 变量就是成员属性函数就是成员方法(方法有三:构造方法[即为__construct].成员方法.析构方法[__destruct]) 成员方法和成员属性都是可以加修饰词.比如封装性的方法或者属性 ...

  2. velocity使用知识总结

    1.后台传递List<bean> ,前台循环获取 List<Lead> leads = leadService.getAllLeadLists(); mv.addObject( ...

  3. 三. 动态添加option选项

  4. Ubuntu14.04安装intel集显驱动

    Ubuntu14.04安装intel集显驱动 标签(空格分隔): ubuntu linux 驱动安装 1.查看本机显卡型号 使用lspci命令来获取PCI接口硬件信息 o@o-pc:~$ lspci ...

  5. 1 python学习——python环境配置

    1 python学习--python环境配置 要学习python语言,光看书看教程还是不好,得动手去写.当然,不管学习什么编程语言,最佳的方式还在于实践. 要实践,先得有一个Python解释器来解释执 ...

  6. centos7 & mysql

    首先centos7很坑爹. 其次,在centos7上安装mysql更坑爹. 特此记录一次坑爹历程后的唯一出路. 安装mysql wget http://repo.mysql.com/mysql-com ...

  7. python 随笔(property & __class__)

    1. 属性装饰器: property @property def errors(self): """ Returns a list of form.errors for ...

  8. 基于 REST 的 Web 服务:基础

    代表性状态传输(Representational State Transfer,REST)在 Web 领域已经得到了广泛的接受,是基于 SOAP 和 Web 服务描述语言(Web Services D ...

  9. Java RuntimeException异常处理汇总

    Java中所有异常的父类是Throwable类,在Throwable类下有两大子类: 一个是Error类,指系统错误异常,例如:VirtualMachineError 虚拟机错误,ThreadDeat ...

  10. ios swift 2 新的OptionSetType使用方法

    http://www.rockhoppertech.com/blog/swift-2-optionsettype/?utm_source=tuicool 主要使用方法如下 components([NS ...