Java的位运算符实例——与(&)、非(~)、或(|)、异或(^)

时间:2023-01-14 21:07:12

一、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);

随机推荐

  1. Lesson 21 Mad or not?

    Text Aeroplanes are slowly driving me mad. I live near an airport and passing planes can be heard ni ...

  2. rqnoj343 mty的考验

    题目描述 啊!几经周折.mty终于找到了他的偶像.他就是….fyc! 可是fyc这样的高级人士可不喜欢一个人总是缠着他.于是他出了一道难题想考考mty.fyc有几个手下:陈乐天,舒步鸡,胡巍……现在f ...

  3. java 虚拟机--新生代与老年代GC

    Heap: JVM只有一个为所有线程所共享的堆,所有的类实例和数组都是在堆中创建的. Method area: JVM只有一个为所有的线程所共享的方法区.它存储类结构,例如运行时常量池,成员和方法数据 ...

  4. BZOJ3939 : [Usaco2015 Feb]Cow Hopscotch

    设f[i][j]表示到(i,j)的方案数,则有 $f[i][j]=\sum f[x][y](x<i,y<j,a[x][y]!=a[i][j])=\sum f[x][y](x<i,y& ...

  5. &lt&semi;转&gt&semi;Linux环境进程间通信(二)&colon; 信号(下)

    原文地址为:http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index2.html 原文为: 一.信号生命周期 从信号发送到信号处理函数的 ...

  6. iot前台开发环境:请求示例

    参考链接:http://www.cnblogs.com/keatkeat/category/872790.html 编辑->update保存 一.typescipt import { Injec ...

  7. &lbrack;Swift&rsqb;LeetCode410&period; 分割数组的最大值 &vert; Split Array Largest Sum

    Given an array which consists of non-negative integers and an integer m, you can split the array int ...

  8. yii2 Gridview网格小部件

    Gridview 网格小部件 一.特点: 1.是yii中功能最强大的小部件之一: 2.非常适合快速建立系统的管理后台. 3.用 dataProvider 键来指定数据的提供者 4.用 filterMo ...

  9. cf1063B Labyrinth &lpar;bfs&rpar;

    可以证明,如果我搜索的话,一个点最多只有两个最优状态:向左剩余步数最大时和向右剩余步数最大时 然后判一判,bfs就好了 dfs会T惨... #include<bits/stdc++.h> ...

  10. 导致线程死锁容易忽略的一点 SendMessage

    假如主线程 某一个按钮 点击的 响应要操作与另一个线程共享的 变量. 在这个点击响应里先lock 之后,假如另一个线程的变量正在 “使用”状态,并且内部又调用了SendMessage试图更新界面的某些 ...