是否有一种直接的方法来关闭java中的整数位?

时间:2016-05-08 00:21:23

标签: java int bit

我试图通过在数字字段中保存布尔数据来简化我的数据库,现在我这样做是为了打开和关闭一点。

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

有没有办法关闭这个位而不打开它?

2 个答案:

答案 0 :(得分:3)

input = input & ~(1 << bit)

答案 1 :(得分:3)

您正在使用按位'或'运算符来打开一位,这是正确的:

0001 | 0010 results in 0011

您可以使用按位'和'功能关闭一点:

1101 & 1110 results in 1100

因此,要关闭一个值的某个位,您可以创建一个“位掩码”,其中包含您不关心的所有位设置为1,并且您要关闭的位设置为0;这将“关闭”该值中的那一点。

如果你有一个用于打开特定位的掩码 - 也就是说,你想要改变的每个位置都有一个0而你想要改变的位置是1,你可以将它转换为通过应用java的按位'not'运算符(〜)来“关闭”位掩码,即〜0010结果为1101。