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

    xiaoxiao2021-04-15  24

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

    1、与(&)

    0 & 2 = 0

    000010010

     

     

     

     

    2、非(~)

    ~0 = 7

    000111

     

     

     

     

    3、或(|)

    0 & 2 = 2

    000010010

     

     

     

    4、异或(^)

    1 & 2 = 3

    001010011

     

     

     

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

    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://ju.6miu.com/read-671890.html

    最新回复(0)