如何取消设置整数中的特定位

use*_*414 15 c c# c++ java

说,我有一个整数10101,我想取消第三位得到10001; 如果我有10001,我仍然会得到10001; 我怎么能实现它?

unset(int i, int j)
int i= 10101 or 10000
int j = 00100
Run Code Online (Sandbox Code Playgroud)

Ted*_*opp 43

假设您正在从右侧索引位,这应该可以解决以下问题value:

int mask = 1 << bitIndex;
value &= ~mask;
Run Code Online (Sandbox Code Playgroud)

您可以使用类似的代码设置该位:

value |= mask;
Run Code Online (Sandbox Code Playgroud)

其中,mask如前那样.(这假设位索引从0开始.)


Jee*_*tel 10

清除或取消一点

使用按位AND运算符(&)清除一下.

 number &= ~(1 << x); 
Run Code Online (Sandbox Code Playgroud)

这将清除位x.必须使用按位NOT运算符(〜)反转位串,然后运行AND.

注意:这里x是从0到LSB的位的位置.