按位运算

时间:2011-09-21 15:26:07

标签: java

有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;
                }

我想知道是否可以通过一个按位运算来计算状态? 感谢。

1 个答案:

答案 0 :(得分:2)

如果state总是只设置了四位中的一位,那么你的代码就不是很有用,因为它与

相同
status = state;

如果state可以设置任意数量的位,则代码会将status设置为state中的最低有效位。这也可以通过以下方式完成:

status = state & -state;