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

2022-09-02 14:21:59

说,我有一个整数像,我想解开第三位得到;如果我有,我仍然会得到;我怎样才能实现它?10101100011000110001

unset(int i, int j)
int i= 10101 or 10000
int j = 00100

答案 1

假设您从右侧索引位,这应该可以取消设置中的特定位:value

int mask = 1 << bitIndex;
value &= ~mask;

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

value |= mask;

哪里和以前一样。(这假设位索引从 0 开始。mask


答案 2

清除或取消设置一点

使用按位 AND 运算符 (&) 清除一个位。

 number &= ~(1 << x); 

这将清除位 x。您必须使用按位 NOT 运算符 (~) 反转位字符串,然后 AND 它。

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


推荐