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


    一、基础知识

    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

                       

  • 相关阅读:
    CSS3动画
    Grid布局
    JS向上取整、向下取整、四舍五入等
    JS DOM资料
    关于setInterval和setTimeout中的this指向问题
    JavaScript 高级技巧 Memoization
    请求接口的方式
    HTTP协议知识
    CSS样式重置
    Chrome 为什么使用多进程,不使用多线程
  • 原文地址:https://www.cnblogs.com/changrulin/p/4803242.html
Copyright © 2020-2023  润新知