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);
随机推荐
- phpStorm 安装配置
首先配置php解释器,进行相关设置: 配置nodejs支持 安装plugins nodejs. 问:如何修改模板的默认注释? 答:创建一个php文件,默认有: <?php/** * Create ...
- C++11内存模型的粗略解释
基本解释 C++11引入了多线程,同时也引入了一套内存模型.从而提供了比较完善的一套多线程体系.在单线程时代,一切都很简单.没有共享数据,没有乱序执行,所有的指令的执行都是按照预定的时间线.但是也正是 ...
- CentOS7.1 Xshell 经常掉线 Connection closed by foreign host
XShell如果经常对CentOS掉线,则VNC肯定连接不上 但是ping CentOS的IP又能ping通,主要原因还是因为sshd的设置问题 #进入ssh目录 cd /etc/ssh #修改ssh ...
- margin,border,padding简介
站在图中心 Content 的角度理解: margin为外边框,border为边框,padding为内边框. 在xml中设置: 如果上下左右的距离都是相同可以通过 android:layout_mar ...
- NFC(9)NDEF文本格式规范及读写示例(解析与封装ndef 文本)
只有遵守NDEF文本格式规范的数据才能写到nfc标签上. NDEF文本格式规范 不管什么格式的数据本质上都是由一些字节组成的.对于NDEF文本格式来说. 1,这些数据的第1个字节描述了数据的状态, 2 ...
- hdu 1412 (STL list)
简单例题 题目:http://acm.hdu.edu.cn/showproblem.php?pid=1412 list 相关博客:http://www.cnblogs.com/fangyukuan/a ...
- RPi 2B 自动发送获取的IP到固定邮箱
/************************************************************************* * RPi 2B 自动发送获取的IP到固定邮箱 * ...
- PhpStorm快捷键设置/个性化设置,
#常用快捷键 设置快捷键:File -> Settings -> IDE Settings -> Keymap -> 选择“Eclipse” -> 然后“Copy”一份 ...
- c语言中静态区,栈,堆的理解
对于程序员,一般来说,我们可以简单的理解为内存分为三个部分:静态区,栈,堆. 很多书没有把把堆和栈解释清楚,导致初学者总是分不清楚. 其实堆栈就是栈,而不是堆. 堆的英文是heap:栈的英文是stac ...
- jwplayer 网页在线播放插件
1.到官网 https://www.jwplayer.com/ 注册,取得key并下载免费版本(免费版只支持mp4格式): 2.编辑如下网页即可在线播放: <!DOCTYPE html> ...