摘要:
在工作中遇到按位或组合权限串。一直不是特别明白。今天终于花了半个下午的时间搞明白其中的道理。首先每一个权限数都是2的N次方数如:k1=2 ; //添加 k2=4 ; //删除 k3=8; //修改 ...如此定义功能权限数,当需要组合权限时,就需要对各个所拥有的权限数按位或了。如: purview = k2|k3; // 赋给删除和修改权限当需要判断在权限串中是否拥有某一权限时,就需要进行按位与。如: if((purview & k1) >0)//判断此权限串是否拥有添加权限,结果>0 则进入if语句代码块中 { .... }说到这里肯定会有疑问了,别急我来细细讲解。 第一
阅读全文
posted @ 2011-10-20 11:51
lynnjeans
阅读(526)
推荐(0)
编辑
摘要:
先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如:int i = 1;i = i << 2; //把i里的值左移2位也就是说,1的2进制是000...0001(这里1前面0的个数和int的位数有关,32位机器,gcc里有31个0),左移2位之后变成000...0100,也就是10进制的4,所以说左移1位相当于乘以2,那么左移n位就是乘以2的n次方了(有符号数不完全适用,因为左移有可能导致符号变化,下面解释原因)需要注意的一个问题是int类型最左端的符号位和移位移出去的情况.我们知道,int是有符号的整形数,最左端的1位是符号位,即0正1负,那
阅读全文
posted @ 2011-10-20 11:35
lynnjeans
阅读(2877)
推荐(0)
编辑