按位运算
问题描述:
有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;
}
我想知道是否可以用一个按位运算来计算状态? 谢谢。
答
如果state
总是正好设置了四个位中的一个,那么你的代码是不是非常有用,因为它是一样的
status = state;
如果state
可以设置的任何位数,你的代码集status
设置为state
中的最低有效位。这也可以用:
status = state & -state;
+0
辉煌的二元操作。我认为这正是@ xtrem06想要的。 – Marcelo
在一行代码中做什么?有4个不同的if语句来处理每个选项。它怎样才能凝聚在一条线上? –
您可以不使用任何代码行,因为这不会执行任何操作。你需要提供一个更现实的例子,很大程度上取决于块中的内容。 –
你怎么能考虑把4如果在一个单一的线? – Stefano