📜  清除 ith 位 (1)

📅  最后修改于: 2023-12-03 14:56:08.550000             🧑  作者: Mango

清除 ith 位是指将一个整数的第 ith 位设为0。在编程中,清除 ith 位的操作是常见且必不可少的。

方式一:使用位运算

首先,我们可以使用位运算来清除 ith 位。具体步骤如下:

  1. 构造一个只有第 ith 位是0,其余位都是1的二进制数mask。
  2. 将原整数num和mask按位异或,得到的结果即是将第ith位清除的数。

下面是Java代码实现:

public static int clearIthBit(int num, int i) {
    int mask = ~(1 << i);
    return num & mask;
}

整数减法的原理是:a-b = a+(-b)。如果将b取补码,再将结果加回去,用一个数mask表示这个过程,其实就是一个掩码。

方式二:使用布尔运算

除了位运算,我们也可以使用布尔运算来清除 ith 位。

  1. 构造一个只有第 ith 位是0,其余位都是1的二进制数mask。
  2. 将原整数num和mask分别右移i位和左移i位,然后相加,得到的结果即是将第ith位清除的数。

下面是Python代码实现:

def clear_ith_bit(num: int, i: int) -> int:
    mask = ~(1 << i)
    return (num >> i & mask) << i | num & (1 << i - 1)

这种方法的好处在于,对于初学者来说,位运算可能比较难理解,而布尔运算更加直观易懂。