Java的位运算符实例——与(&)、非(~)、或(|)、异或(^)
一、Java的位运算符实例——与(&)、非(~)、或(|)、异或(^)
1、与(&)
0 & 2 = 0
0 | 0 | 0 |
0 | 1 | 0 |
0 | 1 | 0 |
2、非(~)
~0 = 7
0 | 0 | 0 |
1 | 1 | 1 |
3、或(|)
0 & 2 = 2
0 | 0 | 0 |
0 | 1 | 0 |
0 | 1 | 0 |
4、异或(^)
1 & 2 = 3
0 | 0 | 1 |
0 | 1 | 0 |
0 | 1 | 1 |
二、运用场景。(类似打标)
public enum FlagEnums { A(1, "高"),
B(2, "富"),
C(3, "帅"), ;
private int bit; private String desc; FlagEnums(int bit, String desc) {
this.bit = bit;
this.desc = desc;
} /**
* 获取当前Flag十进制的值
*
* @return
*/
public long getBit2Value() {
BigDecimal posValue = new BigDecimal(2);
posValue = posValue.pow(bit);
return posValue.longValue();
} /**
* 判断Flag中该位有没有打上
*
* @param flag
* @return
*/
public boolean isBitOn(long flag) {
if ((flag & getBit2Value()) == getBit2Value()) {
return true;
}
return false;
} public int getBit() {
return bit;
} public void setBit(int bit) {
this.bit = bit;
} public String getDesc() {
return desc;
} public void setDesc(String desc) {
this.desc = desc;
} }
用户个性标签,我们可以用falg值来表示,个性标签组合决定了falg值。每个标签的 与 操作组合起来就是falg值了
下面对用户分别进行如下三种操作 :
①、给用户贴上"高"标签
flag | FlagEnums.A.getValue()
②、给用户抹掉"高"标签
flag & (~FlagEnums.A.getValue())
③、判断用户是否有"高"标签
FlagEnums.A.isBitOn(flag);
随机推荐
- CentOS7.1 安装关键步骤 记录下来
SecureCRT下载地址 https://yunpan.cn/cS9W94kuvhXPb 访问密码 08cd[这里GNOME桌面 下的 要全选,截屏有误]
- Dreamweaver CS6破解教程[序列号+破解补丁]
Dreamweaver CS6破解教程[序列号+破解补丁] Adobe Dreamweaver CS6中文简体版下载地址:Dreamweaver CS6中文简体版下载[带破解] 破解之前的准备 1 ...
- UNICODE,GBK,UTF-8区别
简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那三种编码是一兼容的,同一个汉字,那三个码值是完全不一样的.如"汉"的uncode值与g ...
- 函数page_align
/************************************************************//** Gets the start of a page. @return ...
- php类的实现
zend_class_entry typedef struct _zend_class_entry zend_class_entry; struct _zend_class_entry { char ...
- bzoj列表2
之前发过一次了,这里的题较水,没什么好讲的 bzoj1088 直接穷举前两位即可,话说程序员的扫雷是白玩的? bzoj1083 裸的最小生成树(最小生成树=最小瓶颈树),SCOI大丈夫(话说网上二分是 ...
- windows 7环境下配置oracle 11g 客户端
首先要去官网上下载oracle 11客户端,(我用的是64位系统)地址: http://www.oracle.com/technetwork/database/features/instant-cli ...
- 剑指Offer:从第一个字符串中删除第二个字符串中出现过的所有字符
// 从第一个字符串中删除第二个字符串中出现过的所有字符 #include <stdio.h> char* remove_second_from_first( char *first, c ...
- 让memcached和mysql更好的工作
这次是Fotolog的经验,传说中比Flickr更大的网站,Fotolog在21台服务器上部署了51个memcached实例,总计有254G缓存空间可用,缓存了多达175G的内容,这个数量比很多网站的 ...
- alibaba笔试3
16.C 17.这道的取值范围应该是1到1023.这样就选择A 18.B 圆桌问题1个人拿出来当key 19.D 类似于https://apollozhao.wordpress.com/categor ...