&
将一个数的某一个二进制位改为0.
例:编写程序,将12的第4个二进制位改为0
思路:
首先要想到的是将12与一个除了第四位是0其它二进制位都是1的数按位与
其次要想如何获得这个数:就是将一个除了第四位是1其它二进制位都是0的数(即1 << 3)按位取反,
|
将一个数的某一个二进制位改为1.
例:编写程序,将12的第5个二进制位改为1.
思路:
^
在不创建临时变量的情况下,完成两个整数值的交换
思路:
首先我们要知道:
n ^ n = 0;
n ^ 0 = n;
那么a ^ b ^a = b,a ^ b ^ b = a.
所有代码:
#include<stdio.h>
int main()
{
int n = 12;
int ret = 0;
//将12的第4个二进制位改为0
ret = n & (~ (1 << 3));
printf("%d\n", ret);
//将12的第5个二进制位改为1
ret = n | (1 << 4);
printf("%d\n", ret);
//数值交换
int a = 1;
int b = 3;
printf("%d %d\n", a, b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("%d %d\n", a, b);
return 0;
}