有4个属性,每个属性都可以激活。要知道哪一个被激活,我会收到一个int值。使用按位和操作我得到1,2,4或8每个数字对应一个激活属性。
if((state & 1) == 1) {
status = 1;
} else if ((state & 2) == 2) {
status = 2;
} else if((state & 4) == 4) {
status = 4;
} else if((state & 8) == 8) {
status = 8;
}
我想知道是否可以通过一个按位运算来计算状态? 感谢。
答案 0 :(得分:2)
如果state
总是只设置了四位中的一位,那么你的代码就不是很有用,因为它与
status = state;
如果state
可以设置任意数量的位,则代码会将status
设置为state
中的最低有效位。这也可以通过以下方式完成:
status = state & -state;