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

标签 java int bit

我试图通过在数字字段中保存 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/

相关文章:

Java null 到 int 条件运算符问题

检查 C 中的位 - 错误答案?

java - 如何线程池一个 Spring JMS 监听器

返回整数的 Python 运算符

java - Android 工具栏保持黑色背景,不会隐藏

python - "Int"对象不可迭代

Python 按位取反不翻转位

algorithm - 检查 2 的幂数

java - 数组超出边界

java - Web 应用程序中的一个帐户、多个用户、多个购物车