-1

我想编写一个方法,其中方法的参数是一个 int,可能的值为 1 -8。在该方法中,我有 4 个布尔值,我必须将其值设置为整数的相应位值。

method(int x){
   bool1 = value at the first bit, 0 = false, 1 = true;
   bool2 = value at the second bit, 0 = false, 1 = true;
   bool3 = value at the third bit, 0 = false, 1 = true;
   bool4 = value at the last bit, 0 = false, 1 = true;
}

因此,如果必须设置 bool1 = false、bool2 = true、bool3 = false、bool4 = true,我会将“5”作为参数传递给方法(转换为二进制 0101)。

我不知道如何在 Java 中做到这一点(语法方面和最佳代码方面)。

提前致谢。不是家庭作业

4

2 回答 2

2

您可以使用掩码和按位与运算符来检查是否设置了每个位。

//0x8 is 1000 in binary, if the correctbit is set in x then x & 0x8 will
//equal 0x8, otherwise it will be 0.
bool1 = (0x8 & x) != 0;
//Do the same for the other bits, with the correct masks.
bool2 = (0x4 & x) != 0;
bool3 = (0x2 & x) != 0;
bool4 = (0x1 & x) != 0;
于 2013-10-24T21:43:23.167 回答
1

您的规格转换为:

void method(int x) {
   boolean bool1 = (x & 8) > 0;
   boolean bool2 = (x & 4) > 0;
   boolean bool3 = (x & 2) > 0;
   boolean bool4 = (x & 1) > 0;
}
于 2013-10-24T21:43:55.510 回答