二进制的逻辑运算

二进制的逻辑运算的应用很广泛,例如系统的鉴权功能。


假设我们的系统中,每一个基本功能对应一个权值,该值是一个无符号二进制数,为2的n次方(n为正整数),系统所有功能对应的权值不重复。

功能权值
基本功能11
基本功能210
基本功能3100
基本功能41000
基本功能510000
基本功能6100000

 

 

 

 

 

 

 

用户可以使用某一个功能时,将分配给该用户此基本功能对应的权值,当一用户具有多个基本功能使用权限时,他将被分配多个权值。

例如当用户有功能1、2、4使用权限时,该用户被分配的权值是1、10、1000,将这三个权值作或运算,结果为"1011"。

判断一个用户是否具有某一基本功能的使用权限时,只要将用户的权值与该基本功能的权值作"位与"运算,运算的结果如果与基本功能的权值相一致,则用户具有使用该基本功能的权限。

例如用户权值"111011"与基本功能2比较,作"位与"运算的结果为"000010"与"10"相等,表示具有该权限。


相关代码如下:

        public int ConvertBinaryStringToInt(string s)
        {
            int i = 0;
            int j = s.Length - 1;
            for (int k = 0; k <= j; k++)
            {
                if (s[k] == '1')
                {
                    i += 0x1 << (j - k);
                }
            }
            return i;
        }

将 string 型转换成 int  型,即可进行逻辑"与"、"或"运算。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值