Java 二进制
Java 二进制
当空皓月 发表于2年前
Java 二进制
  • 发表于 2年前
  • 阅读 81
  • 收藏 9
  • 点赞 1
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

按位与、或、异或等运算方法:

http://blog.sina.com.cn/s/blog_618199e60100ka5b.html

按位与运算符(&)

运算规则: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表示某位上没有权限。

共有 人打赏支持
粉丝 14
博文 176
码字总数 65831
×
当空皓月
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: