Java 二进制

115618_icpC_1389206.png

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

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表示某位上没有权限。

转载于:https://my.oschina.net/u/1389206/blog/661353

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值