按位与、或、异或等运算方法:
按位与运算符(&)
运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
即:两位同时为“1”,结果才为“1”,否则为0。
应用:
假设我们规定一个人有听,说,读,写,四个权限。
用二进制位0111 0000表示,第7,6,5,4位对应听,说,读,写,四个权限。1表示有权限,0表示无权限。
如果服务端给我们传递了一个112,那么他有什么权限呢?
将112转换成二进制:01110000,可见:他有听,说,读的权限。
那么用程序怎么判断某一位是否是1呢?
我们可以用2的6,5,4,3次方,分别跟传递进来的112进行与运算。如果结果是0,表示无权限。否则表示有权限。
112 0111 0000 传递的值
2^6 0100 0000 相与结果不是0,第7位有听权限。
2^5 0010 0000 相与结果不是0,第6位有说权限。
2^4 0001 0000 相与结果不是0,第5位有读权限。
2^3 0000 1000 相与结果为0,第4位没有写权限。
两位同时为“1”,结果才为“1”,否则为0。
总结:传递的值与某位相与的结果如果是0表示某位上没有权限。