安卓基础

体会安卓位运算之美

2022-04-17  本文已影响0人  在岁月中远行

位运算在实际开发中的使用

在日常生活中,我们可以通过位运算来简化一些操作,例如服务器返回一个数字,可能存在几种状态叠加的情况,如果按照传统的比较麻烦,这时候就需要利用位运算。

服务器返回状态值为:

指令执行正常,指令同步失败,开门指令出错,添加固定密码出错,删除固定密码出错。

那么我们可以用二进制表示。

public class StatusManager {

//返回正常

    public static final int STATUS_NORMAL =0; //0000

//时间同步失败

    public static final int STATUS_TIME_ASY =1; //0001

//开门指令失败

    public static final int STATUS_OPEN_DOOR =1 <<1; //0010

//添加固定密码失败

    public static final int STATUS_ADD_FIXED_PSW =1 <<2; //0100

//删除固定密码失败

    public static final int STATUS_DEL_FIXED_PSW =1 <<3; //1000

    private int flag;

    //重置状态

    public void setStatus(int status) {

flag = status;

    }

//添加一种或者多种状态

    public void addStatus(int status) {

flag |= status;

    }

//删除一种或者多种状态

    public void deleteStatus(int status) {

flag &= ~status;

    }

//是否具有某些状态

    public boolean hasStatus(int status) {

return (flag & status) == status;

    }

//是否不具有某些状态

    public boolean hasNotStatus(int status) {

return (flag & status) ==0;

    }

//是否不具有某些状态

    public boolean hasOnlyStatus(int status) {

return flag == status;

    }

}

怎么使用看如下代码

StatusManager statusManager=new StatusManager();

  statusManager.addStatus(STATUS_TIME_ASY |STATUS_OPEN_DOOR);

//  statusManager.deleteStatus(STATUS_TIME_ASY);

  boolean is=statusManager.hasStatus(STATUS_TIME_ASY);

  Log.e("tanlin", String.valueOf(is));

这样就OK了

上一篇 下一篇

猜你喜欢

热点阅读