Java 位运算

Java 位运算,java,Java,共有4个属性,每个属性都可以激活。为了知道哪一个被激活,我收到一个int值。使用按位and运算,我得到1、2、4或8,每个数字对应一个激活的属性 if((state & 1) == 1) { status = 1; } else if ((state & 2) == 2) { status = 2; } else if((state & 4) == 4) { status = 4;

共有4个属性,每个属性都可以激活。为了知道哪一个被激活,我收到一个int值。使用按位and运算,我得到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;
                }
我想知道是否可以用一个位运算来计算状态?
谢谢。

如果
状态
总是恰好设置了四位中的一位,那么您的代码不是很有用,因为它与

status = state;

如果
状态
可以设置任意数量的位,则代码将
状态
设置为
状态
中的最低有效位。这也可以通过以下方式实现:

status = state & -state;

在一行代码中做什么?这里有4个不同的if语句来处理每个选项。它怎么能压缩成一行呢?你不能使用任何代码行,因为这不起任何作用。你需要提供一个更现实的例子,这在很大程度上取决于块中的内容。你如何考虑在一行中放入4 if???我想知道我是否可以在按位运算的行中得到1、2、4或8?如果
state
可以设置这4位中的任何一位,为什么你只需检查一位并将
status
设置为这一位?我的意思是:如果
状态
为3,
状态
将是第二位(2)设置与否的1。这是为了什么?精彩的二进制运算。我想这正是@xtrem06想要的。