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

来源:互联网 发布:网络歌手囚鸟的歌曲 编辑:程序博客网 时间:2024/05/22 02:09
一、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);

 

0 0
原创粉丝点击