如何在 C/C++ 中设置、清除和切换位?
您可以在C、C++、Python和所有其他支持这些操作的编程语言中使用按位运算符设置清除位和切换位。您还需要使用位移运算符将位移到正确的位置。
设置一点
要设置一点,我们需要使用按位OR运算符-
例子
#includeusing namespace std; int main() { int i = 0, n; //输入要设置的位: cin >> n; i |= (1 << n); //取i和1移位n个位置的OR cout << i; return 0; }
输出
如果您输入4,这将给出输出-
16
因为16相当于二进制的10000。
清零一点
为了清除一点,我们需要使用按位与运算符(&)和按位非运算符(~)-
例子
#includeusing namespace std; int main() { //i是二进制的110 int i = 6, n; //输入要清除的位: cin >> n; i &= ~(1 << n); //取i和1移位n个位置的OR negated cout << i; return 0; }
输出
如果您输入1,这将给出输出-
4
因为110变成了100,相当于十进制的4。
稍微切换
要稍微切换,我们需要使用按位异或运算符(^)-
例子
#includeusing namespace std; int main() { //i是二进制的110 int i = 6, n; //输入要切换的位: cin >> n; i ^= (1 << n); //对i和1个移位的n个位置进行XOR cout << i; return 0; }
输出
如果您输入1,这将给出输出-
4
因为110变成了100,相当于十进制的4。