如何在 C/C++ 中设置、清除和切换位?

c++server side programmingprogramming

您可以使用 C、C++、Python 和支持这些操作的所有其他编程语言中的按位运算符来设置清除和切换位。您还需要使用位移位运算符将位移到正确的位置。

设置位

要设置位,我们需要使用按位或运算符 −

示例

#include<iostream>
using namespace std;
int main() {
   int i = 0, n;
   
   // 输入要设置的位:
   cin >> n;
   i |= (1 << n); // 将 i 和 1 进行或运算,移位 n 个位置
   cout << i;
   return 0;
}

输出

如果输入 4,则输出 −

16

因为 16 相当于二进制的 10000。

清除一个位

要清除一个位,我们需要使用按位 AND 运算符 (&) 和按位 NOT 运算符 (~) −

示例

#include<iostream>
using namespace std;
int main() {
   // i 在二进制中为 110
   int i = 6, n;
   
   // 输入要清除的位:
   cin >> n;
   i &= ~(1 << n); // 将 i 和 1 移位 n 位并取反
   cout << i;
   return 0;
}

输出

如果输入 1,则输出 −

4

因为 110 变成 100,相当于十进制的 4。

切换位

要切换位,我们需要使用按位 XOR 运算符 (^) −

示例

#include<iostream>
using namespace std;
int main() {
   // i 的二进制值为 110
   int i = 6, n;
   
   // 输入要切换的位:
   cin >> n;
   i ^= (1 << n); // 将 i 和 1 进行异或并移位 n 个位置
   cout << i;
   return 0;
}

输出

如果输入 1,则输出 −

4

因为 110 变成 100,相当于十进制中的 4。


相关文章