C#编程之c# 按位与,按位或
小标 2018-09-17 来源 : 阅读 5882 评论 0

摘要:本文主要向大家介绍了C#编程之c# 按位与,按位或,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。

本文主要向大家介绍了C#编程之c# 按位与,按位或,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。

在工作中遇到按位或组合权限串。一直不是特别明白。今天终于花了半个下午的时间搞明白其中的道理。
首先每一个权限数都是2的N次方数
如:k1=2 ; //添加
          k2=4 ; //删除
          k3=8; //修改
          ...
如此定义功能权限数,当需要组合权限时,就需要对各个所拥有的权限数按位或了。
如:
         purview = k2|k3; // 赋给添加和删除权限
当需要判断在权限串中是否拥有某一权限时,就需要进行按位与。
如:
         if((purview & k1) >0)//判断此权限串是否拥有添加权限,结果>0 则进入if语句代码块中
          {
                 ....
          }     
说到这里肯定会有疑问了,别急我来细细讲解。
   第一,2的8位二进制值为00000010
                 4的8位二进制值为00000100
                8的8位二进制值为00001000
第二,当对8和4进行按位或操作后,结果为:
                 4|8 = 12
                 00000100 |00001000 = 00001100
              为什么会是这样呢?在进行按位或操作时 00000001|00000001=00000001   ;00000001|00000000=1 ;00000000|00000000=00000000
              也就是说除了0|0结果是0外,其它运算结果的都是1
             所以    00000100 |00001000 = 00001100
            也就说上面的 purview = k2|k3 的二进制值结果是 purview =00000100 |00001000 =00001100了
第三,当对8和4进行按位与操作后,结果为:
               4&8=0
            00000100 &00001000 = 00000000
              同样为什么会是这样呢?在进行按位与操作时 00000001&00000001=00000001   ;00000001&00000000=00000000 ;00000000&00000000=00000000
            也就是说除了1&1结果是1外,其它运算结果的都是0
            所以 00000100 &00001000 = 00000000
            上面的if((purview & k1) >0)的结果就是 00001100&00000010 =00000000 也就是(0>0)=false
           同样if((purview & k2) >0)的结果就是 00001100&00000100 =00000100=4=k2 也就是 (4>0)=true
 
这样我们就理解组合权限串和判断权限的原理了,说白了就是对2N次方数的按位与和按位或。

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C#.NET频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 6 不喜欢 | 5
看完这篇文章有何感觉?已经有11人表态,55%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程