C的|、||、&、&&、异或、~、!运算符
(1)按位与运算符(&)
0 & 0 = 0, 0 & 1 = 0, 1 & 0 = 0, 1 & 1 = 1
(2)按位或运算符(|)
0 | 0 = 0, 0 | 1 = 1, 1 | 0 = 1, 1 | 1 = 1
(3)按位异或运算符(^)
0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 0 = 1, 1 ^ 1 = 0
(4)按位取反运算符(~)
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
int main() {
int a = 43,b = 21; //a = 1101 0101
int i = 5;
if ((1 << (i - 1)) & a)
printf("yes");
printf("%d\n", a | (1 << (i - 1)));
printf("%d\n", a & (a - 1)); // 去掉最后一个1
printf("%d\n", a & (~(1 << 1))); // 第i个位置变
//判断a的第i个位置是否为1 (1<<(i-1))&a
//将a的第i个位置变成1 a|(1<<(i-1))
//将a的最后一个1改为0 这里用的是补码的知识 a&(a-1)
//将a的第i位变成0 a&(~(1<< i))
printf("%d", (1<<1) & ~(1 << 1));//他是一元运算符,用于求整数的二进制反码,即分别将操作数各二进制位上的1变为0,0变为1。
return 0;
}