我试图通过在数字字段中保存 boolean 数据来简化我的数据库,现在我这样做是为了打开和关闭一点。
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;
}
有没有什么办法可以在不打开的情况下关闭位?
最佳答案
您正在使用按位“或”运算符来打开位,这是正确的:
0001 | 0010 results in 0011
您可以使用按位“与”函数来关闭位:
1101 & 1110 results in 1100
因此,要关闭一个值的一位,您可以创建一个“位掩码”,将您不关心的所有位都设置为 1,而您想要关闭的位设置为 0;这将“关闭”值中的那一位。
如果您有一个用于打开特定位的掩码——也就是说,在您不想更改的每个位置都有一个 0,而在您想要更改的位置有一个 1,您可以将它转换成通过应用 java 的按位“非”运算符 (~)“关闭”位掩码,即 ~0010 结果为 1101。
关于java - 有没有一种直接的方法来关闭 java 中的整数位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37094968/