在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 |(1input=input&~(1input=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我认为,保存单个参数将帮助我节省一些硬盘空间和宽带。不需要查询…直到有:-)