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


使用位运算符,可以在C、C++、Python以及支持这些运算符的所有其它编程语言中设置、清除和转换位。你还需要使用位移运算符来设置位。

设置位

要设置位,我们需要使用位运算符OR(或)−

示例

#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年2月11日

8000+次浏览

开启你的 职业生涯

通过完成课程获取认证

开始
广告
© . All rights reserved.