Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中是否有一种直接的方法来关闭整数位?_Java_Int_Bit - Fatal编程技术网

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

在java中是否有一种直接的方法来关闭整数位?,java,int,bit,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); } ret

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

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;
}
int旋转位(int输入,int位,布尔值){
如果(值){

input=input |(1
input=input&~(1
input=input&~(1您正在使用按位“或”运算符打开位,这是正确的:

0001 | 0010 results in 0011
您可以使用按位“和”功能关闭位:

1101 & 1110 results in 1100
因此,要关闭一个值的一位,您需要制作一个“位掩码”,将所有您不关心的位设置为1,并将要关闭的位设置为0;这将“关闭”值中的该位


如果您有一个用于打开特定位的掩码,也就是说,在您不想更改的每个位置上都有一个0,在您想更改的位置上有一个1,那么您可以通过应用java的按位“not”运算符(~)将其转换为“关闭”位掩码,即,~0010导致1101。

您正在使用按位“或”运算符打开位,这是正确的:

0001 | 0010 results in 0011
您可以使用按位“和”功能关闭位:

1101 & 1110 results in 1100
因此,要关闭一个值的一位,您需要制作一个“位掩码”,将所有您不关心的位设置为1,并将要关闭的位设置为0;这将“关闭”值中的该位


如果您有一个用于打开特定位的掩码,也就是说,在您不想更改的每个位置上都有一个0,在您想更改的位置上有一个1,那么您可以通过应用java的按位“not”运算符(~)将其转换为“关闭”位掩码,即,~0010导致1101。

这可能通过减少字段数量来简化数据库模式,但缺点是查询位字段变得更加困难,查询优化器更难优化。这个新字段只包含一些用户参数,因此不需要查询。因为我使用mysql,所以使用我想,用单个整数而不是tinyInt来保存单个参数将帮助我节省一些硬盘空间和宽带。不需要查询…直到有:-)这可能会通过减少字段数量来简化数据库架构,但缺点是查询位字段变得更加困难,查询优化器更难优化。这个新字段只包含一些用户参数化,因此不需要查询。由于im使用mysql,因此使用单整数而不是tinyInto我认为,保存单个参数将帮助我节省一些硬盘空间和宽带。不需要查询…直到有:-)