C#位运算讲解与示例[转]
来源:互联网 发布:蓝鸥unity3d 编辑:程序博客网 时间:2024/06/06 06:39
原文地址:http://www.cnblogs.com/chinabc/archive/2012/05/10/2494132.html
左移相当于乘. 左移一位相当于乘2;左移两位相当于乘4;左移三位相当于乘8。
x<<1= x*2
x<<2= x*4
x<<3= x*8
x<<4= x*16
右移相当于整除. 右移一位相当于除以2;右移两位相当于除以4;右移三位相当于除以8。
x>>1= x/2
x>>2= x/4
x>>3= x/8
x>>4=x/16
from : http://blog.csdn.net/icyleaf1026/archive/2007/08/25/1758243.aspx
常用的位运算主要有与(&), 或(|)和非(~), 比如:
1 & 0 = 0, 1 | 0 = 1, ~1 = 0
在设计权限时, 我们可以把权限管理操作转换为C#位运算来处理.
第一步, 先建立一个枚举表示所有的权限管理操作:
public enum Permissions{
Insert = 1,
Delete = 2,
Update = 4,
Query = 8
}
[Flags]表示该枚举可以支持C#位运算, 而枚举的每一项值, 我们用2的n次方来赋值, 这样表示成二进制时刚好是1 = 0001, 2 = 0010, 4 = 0100, 8 = 1000等, 每一位表示一种权限, 1表示有该权限, 0表示没有.
接下来是权限的运算:
1. 权限的加法, 使用与运算来实现. 我们知道, 0001 | 0100 = 0101, 这样就表示同时具有第一位和第三位的权限管理了, 枚举表示为:
- Permissions per = Permissions.Insert | Permissions.Update
2. 权限的减法, 使用与运算+非运算来实现, 如上面要去掉Insert权限, 操作为:
- Permissions per &= ~Permissions.Insert即是 0101 & ~0001 = 0101 & 1110 = 0100
3. 权限的判断, 使用与运算, 当判断用一用户是否具有该操作权限时, 要把用户的的权限与操作权限进行与运算, 如果得到的结果仍是操作权限管理, 则表示用户具有该权限:
Permissions.Update;
if(per & PermissionsPermissions.Insert = Permissions.Insert)
{
//有操作权限
}
比较过程为 0101 & 0001 = 0001, 0001的0位用与C#位运算把其它位都置成0, 变成只比较1的这一位.
- C#位运算讲解与示例[转]
- C#位运算讲解与示例[转]
- C#位运算讲解与示例[转]
- C#位运算讲解与示例
- C#位运算讲解与示例
- C#位运算讲解与示例
- C#位运算讲解与示例
- C#位运算讲解与示例
- C#位运算讲解与示例
- C#位运算讲解与示例
- C#中的位运算讲解与示例 c#逻辑运算
- C#位运算示例
- C#位运算 示例
- C#位运算 示例
- 位运算简易讲解
- java基础知识:运算符与、按位与操作讲解
- java位运算示例
- 逻辑位运算示例
- linux cron实现计划任务
- MySQL大数据量分页SQL语句优化
- T0601——获取某一类的名称
- poj 1008
- python学习-多重继承
- C#位运算讲解与示例[转]
- 快速找出两个Word文档之间的差别
- boost 中使用 线程池threadpool
- Python函数的绑定调用和非绑定调用
- php实现微信中的图片合并 (圆角)
- svn版本库迁移
- python学习-定制类
- 学生信息管理系统系列博客三
- 写给想当程序员的朋友