美文网首页
开关移位运算

开关移位运算

作者: 小雨hahaha | 来源:发表于2015-12-18 14:55 被阅读123次

苹果API中我们经常会见到有如下这种枚举

图1

我们经常用到的是如下这种:

图2

图1图2有什么区别呢?

区别就在于图2每次只能选择一种,而图1可以用一个数字代替几种枚举值。

比如每一种枚举值代表一种开关,开关由后台来控制是否打开,如果用图2我们在代码里就需要判断每一种枚举值是否打开,而如果用图1,后台只要传一个7,客户端就可以判断,是把前3个的开关打开,算法如下:

1<<0,表示0001

1<<1, 表示0010

1<<2, 表示0100

1<<4, 表示1000

如果给来的值为7,转化为二进制则为0111,也就是前三个枚举值都可以选到。

在使用的时候比如server传来的字段为

图3

我们判断的时候就可以写一个这样的方法,在需要判断开关的地方来进行判断

图4

这种带移位运算的开关枚举值之间可以是或的关系,一次可以选择多个,而正常的不带异味原酸的枚举之间是且的关系,每次只能选择一种,所以如果作为开关比较多的地方来用还是比较方便的

相关文章

  • 开关移位运算

    苹果API中我们经常会见到有如下这种枚举 我们经常用到的是如下这种: 图1图2有什么区别呢? 区别就在于图2每次只...

  • 常见位运算及技巧

    移位运算 移位运算包含逻辑移位(logical shif) 和 算术移位(arithmetic shift)。 逻...

  • 位运算

    位运算包括逻辑运算和移位运算,相应地,位运算符包括逻辑运算符(包括~、&、|和^)和移位运算符(包括>>、<<和>...

  • 2018-04-24 JAVA 移位运算符

    移位运算符操作的对象就是二进制的位,可以单独用移位运算符来处理int型整数。有三种移位运算符 (<<,>>,>>>...

  • Java移位运算

    背景 java或android源码中经常会使用移位运算来代替乘除运算,因为移位运算的性能比乘除运算的高(PS:对于...

  • 移位运算

    1,<< :左移运算符, System.out.println(1<<1);//2 System.out.prin...

  • 移位运算

    移位运算位自己在写遗传算法的代码的时候出现的,如下图所示,当j=0的时候,此时 zero_one = test_j...

  • 【移位运算】

    使用场景 ArrayList动态扩容,每次扩展50% 理论 oldCapacity右移1位 --> oldCapa...

  • 运算符

    位移位运算 如 UIViewAutoresizingFlexibleHeight = 1 << 4, 1.左移运算...

  • Java的位运算符详解实例

    1.与(&)、或(|)、非(~)、异或(^) 2.移位运算符 移位运算符操作的对象就是二进制的位,可以单独用移位运...

网友评论

      本文标题:开关移位运算

      本文链接:https://www.haomeiwen.com/subject/iomphttx.html