#define BIT3 (0x1 << 3)
static int a;
//设置a的bit 3:
void set_bit3(void)
{
a |= BIT3;
}
//清a的bit 3
void clear_bit3(void)
{
a &= ~BIT3;
}
//保留第k位
void set_bit3(void)
{
a &= BIT3;
}
0x1表示为2进制就是0001
0x1<<3 = 0001<<3 = 1000 = 0x8
a |= BIT3 相当 a = a | BIT3 相当 a = a | 0x0008;
a &= ~BIT3 相当 a = a & ~BIT3 相当 a = a & 0xFFF7;
a=3,b=5,不用第三变量temp,对a和b的值进行交换
如果有第三者temp,a和b交换非常方便:
temp = a;
a = b;
b =temp; 123
若无temp,可以这样做:
a = a + b;
b = a - b;
a = a - b;123
当然,我们可以利用C语言的位运算符:
a = 3;b = 5;
a ^= b;
b ^= a;
a ^= b; 1234
原理是a ^ b ^ b == a; a ^ b == b ^ a;