zoukankan      html  css  js  c++  java
  • 二进制 位与(或)使用

             平时开发时状态判断比较麻烦,有时数据库可能会设置多个字段或一个字段多个值来满足要求。管理维护太繁琐,最近项目中需要判断角色权限,我们就用二进制位(8位)来设置判断。

             当然上述所说与标题里的位与(或)没多大关系,接下来慢慢分析二进制位与(或)如何用于用户权限管理。

             假如:    1:权限1;2:权限2;4:权限3;8:权限4……

                             int num=1|2    // num权限值( 拥有 权限1和权限2)

             那么如何是否有权限3, so  可以使用num&4判断结果是否大于0(大于0或等于4则具有权限3否则没有该权限)

             上述列子:

             位或:1|2------->   0001    --->权限1

                                         0010    ---->权限2

                                      -----------

                                         0011    ----->num

            

              位与:num&3-->  0011  ---->num                                                  位与:num&2 ---> 0011 ----->num

                                         0100  ---->权限3                                                                            0010 ----->权限2

                                    ----------------                                                                                     ----------------

                                         0000 ------>0(没有权限)                                                              0010 ----->权限2 (有权限

              结果很明显用起来相当方便,更重要的是sql语句也支持位操作,以前确实忽略了位运算。

    学无先后,达者为师
  • 相关阅读:
    EcFinal游记
    简要介绍补码的原理
    【SCOI2007】降雨量
    【ecfinal2019热身赛】B题
    【HAOI2011】problem a
    20200301(ABC)题解 by李旭晨
    20200228(ABC)题解 by 马鸿儒
    20200220(C)题解 b刘存
    20200225(DEF)题解 by 马鸿儒
    20200224(ABC)题解 by 马鸿儒
  • 原文地址:https://www.cnblogs.com/seanchang/p/5202739.html
Copyright © 2011-2022 走看看