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


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

设置位

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

示例

#include<iostream>
using namespace std;
int main() {
   int i = 0, n;
   
   // Enter bit to be set:
   cin >> n;
   i |= (1 << n); // Take OR of i and 1 shifted n positions
   cout << i;
   return 0;
}

输出

如果输入 4,这将给出输出 -

16

因为 16 在二进制中等于 10000。

清除位

要清除一位,我们需要使用位与运算符 (&) 和位非运算符 (~) -

示例

#include<iostream>
using namespace std;
int main() {
   // i is 110 in binary
   int i = 6, n;
   
   // Enter bit to be cleared:
   cin >> n;
   i &= ~(1 << n); // Take OR of i and 1 shifted n positions negated
   cout << i;
   return 0;
}

输出

如果输入 1,这将给出输出 -

4

因为 110 变为 100,在十进制中等于 4。

切换位

要切换一位,我们需要使用位异或运算符 (^) -

示例

#include<iostream>
using namespace std;
int main() {
   // i is 110 in binary
   int i = 6, n;
   
   // Enter bit to be toggled:
   cin >> n;
   i ^= (1 << n); // Take XOR of i and 1 shifted n positions
   cout << i;
   return 0;
}

输出

如果输入 1,这将给出输出 -

4

因为 110 变为 100,在十进制中等于 4。

更新时间: 2020-02-11

8K+ 浏览量

启动你的 事业

通过完成课程获得认证

开始
广告
© . All rights reserved.