二进制的逻辑运算
2013-06-23 20:50
190 查看
二进制的逻辑运算的应用很广泛,例如系统的鉴权功能。
假设我们的系统中,每一个基本功能对应一个权值,该值是一个无符号二进制数,为2的n次方(n为正整数),系统所有功能对应的权值不重复。
用户可以使用某一个功能时,将分配给该用户此基本功能对应的权值,当一用户具有多个基本功能使用权限时,他将被分配多个权值。
例如当用户有功能1、2、4使用权限时,该用户被分配的权值是1、10、1000,将这三个权值作或运算,结果为"1011"。
判断一个用户是否具有某一基本功能的使用权限时,只要将用户的权值与该基本功能的权值作"位与"运算,运算的结果如果与基本功能的权值相一致,则用户具有使用该基本功能的权限。
例如用户权值"111011"与基本功能2比较,作"位与"运算的结果为"000010"与"10"相等,表示具有该权限。
相关代码如下:
将 string 型转换成 int 型,即可进行逻辑"与"、"或"运算。
假设我们的系统中,每一个基本功能对应一个权值,该值是一个无符号二进制数,为2的n次方(n为正整数),系统所有功能对应的权值不重复。
功能 | 权值 |
基本功能1 | 1 |
基本功能2 | 10 |
基本功能3 | 100 |
基本功能4 | 1000 |
基本功能5 | 10000 |
基本功能6 | 100000 |
例如当用户有功能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 型,即可进行逻辑"与"、"或"运算。
相关文章推荐
- 二进制的逻辑运算
- 二进制运算&逻辑运算
- 二进制与逻辑运算
- 二进制运算&逻辑运算
- 二进制及逻辑运算学习
- C# 使用二进制 逻辑(与、或、非)位移运算 控制系统权限
- Java 位运算和逻辑运算的区别
- 剑指offer_面试题10_二进制中1的个数(位运算)
- 视频8学习心得-- 逗号运算和逗号表达式,逻辑表达式,关系表达式
- Java 小例子:不通过逻辑运算和类库,比较两个 integer 大小
- 位“异或”运算在变量交换中的应用及与位“或”的逻辑关系
- python逻辑运算的返回值
- 二进制整数的加,减运算
- C语言中的位运算和逻辑运算
- 深入理解计算机系统(2.5)---二进制整数的加、减法运算(重要)
- php中逻辑运算的短路算法
- 位运算:位逻辑运算和位移运算——可以节省内存
- 逻辑运算表达式(*=逻辑与,+=逻辑或,!=逻辑非)转化为二叉树
- 数字图像处理入门(五)-代数、逻辑运算
- Swift学习记录 -- 3. 逻辑分支语句(if , else if ,三目运算 ,guard)