zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    博客园设置自定义页面[布局][样式]
    linux的hostname文件目录
    mybatis底层源码分析之--配置文件读取和解析
    Enum的使用
    easyUI datagrid笔记
    软工实践第二次作业-黄紫仪
    软工实践第一次作业-黄紫仪
    第五次作业--原型设计
    作业三
    作业二
  • 原文地址:https://www.cnblogs.com/chenmo-xpw/p/5578840.html
Copyright © 2011-2022 走看看