有没有直接的方法来关闭 java 中的整数位?
is there a straightforward way to turn off an integer bit in java?
我试图通过在数字字段中保存布尔数据来简化我的数据库,现在我这样做是为了打开和关闭一点。
int turnBit(int input, int bit, boolean value){
if(value){
input = input | (1<<bit);
}else{
input = input | (1<<bit);
input = input ^ (1<<bit);
}
return input;
}
有没有什么办法可以在不打开的情况下关闭位?
input = input & ~(1 << bit)
你使用的是按位运算符'or'开位,这是正确的:
0001 | 0010 results in 0011
可以使用按位'and'函数关闭一点:
1101 & 1110 results in 1100
因此,要关闭一个值的一位,您可以创建一个 'bit mask',其中所有您不关心的位都设置为 1,而您想要关闭的位设置为 0;这将 'turn off' 值中的那个位。
如果您有一个用于打开特定位的掩码 -- 也就是说,在您不想更改的每个位置都有一个 0,在您想要更改的位置有一个 1,您可以对其进行转换通过应用 java 的按位 'not' 运算符 (~) 进入 "turn off" 位掩码,即 ~0010 结果为 1101.
我试图通过在数字字段中保存布尔数据来简化我的数据库,现在我这样做是为了打开和关闭一点。
int turnBit(int input, int bit, boolean value){
if(value){
input = input | (1<<bit);
}else{
input = input | (1<<bit);
input = input ^ (1<<bit);
}
return input;
}
有没有什么办法可以在不打开的情况下关闭位?
input = input & ~(1 << bit)
你使用的是按位运算符'or'开位,这是正确的:
0001 | 0010 results in 0011
可以使用按位'and'函数关闭一点:
1101 & 1110 results in 1100
因此,要关闭一个值的一位,您可以创建一个 'bit mask',其中所有您不关心的位都设置为 1,而您想要关闭的位设置为 0;这将 'turn off' 值中的那个位。
如果您有一个用于打开特定位的掩码 -- 也就是说,在您不想更改的每个位置都有一个 0,在您想要更改的位置有一个 1,您可以对其进行转换通过应用 java 的按位 'not' 运算符 (~) 进入 "turn off" 位掩码,即 ~0010 结果为 1101.