求C#位运算符的实际用或是规律,主要是下面这几个~ 按位求补符;
^ 异或位运算符;
& 且位运算符;
|  或位运算符;
<<左移运算符
>>右移运算符我知道& 且位运算符的一个应用,就是在权限管理系统中的一个应用权限系统中,Role为角色,Module为模块,Permission为权限
设各权限值分别如下(2倍等比递增的关系):
1. 列表/查看 = 2
2. 新增 = 4
2. 修改 = 8
4. 删除 = 16
此时的“Role : Module : Permission”中的Permission等于上述四种操作权限中所拥有的权限值之和,比如:若某个(Role + Module)拥有查看、新增、修改、删除的权限,则其Permission=2+4+8+16=30。
    下面进行权限检测,判断“(Role + Module)”所对应的Permission是否包含上述四种操作权限中的每一个。解决问题关键:使用“&”运算符。比如:
判断Permission是否包含“查看”的权限值,就用 if((Permission & 2) == 2)
判断Permission是否包含“新增”的权限值,就用 if((Permission & 4) == 4)
判断Permission是否包含“修改”的权限值,就用 if((Permission & 8) == 8)
判断Permission是否包含“删除”的权限值,就用 if((Permission & 16) == 16)求其它位运算符的实际应用,就是在什么情况下使用,并不是位运算的原理,而是实际的应用,或在应用中的规律,求高手

解决方案 »

  1.   

    本帖最后由 caozhy 于 2012-09-16 11:50:39 编辑
      

  2.   

    比如说位运算可以用来比对DNA,可以用来表示颜色,可以用来表示神经网络、可以.......其实一切信息都可以用“0、1”二进制表示。但是编程设计的关键是知道应用领域本身的逻辑结构,然后我们可以说“我可以把枚举的权限值用bit来表示、我可以把DNA用bit来表示、我可以把神经网络用bit表示”。实际上你应该尽量使用自然的方式来先学会分析业务逻辑。如果一上来就纠结在bit里,你就没有更大的机会去真正全面、深入地讨论业务逻辑了。建议lz,趁着你现在还有热情和动力去讨论“bit运算的应用”,暂时忘掉你的bit运算,去多做一些更大技术范围里的业务分析和设计训练。你可以讨论更多算法设计问题,而对过于细节、每个设计人员都有权利对底层结构稍作修改其实可以先放一放。