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

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

1、与(&)

0 & 2 = 0

000
010
010

 

 

 

 

2、非(~)

~0 = 7

000
111

 

 

 

 

3、或(|)

0 & 2 = 2

000
010
010

 

 

 

4、异或(^)

1 & 2 = 3

001
010
011

 

 

 

 二、运用场景。(类似打标)

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

 

转载于:https://www.cnblogs.com/chenmo-xpw/p/5578840.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值