我想编写一个方法,其中方法的参数是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中实现这一点(语法和最佳代码)。
提前致谢。不是作业
答案 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;
}