将整数作为参数传递,并将整数解释为java中方法中的位

时间:2013-10-24 21:34:47

标签: java bit-manipulation

我想编写一个方法,其中方法的参数是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中实现这一点(语法和最佳代码)。

提前致谢。不是作业

2 个答案:

答案 0 :(得分:2)

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

//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;

答案 1 :(得分: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;
}