【C语言】位运算
条评论实例1
在一个多任务嵌入式系统中,有一个CPU可直接寻址的32位寄存器REGn,地址为0x1F000010,编写一个安全的函数,将寄存器REGn的指定位反转(要求保持其他bit的值不变)。
特定位取反用^=
void bit_reverse(uint32_t nbit)
{
((volatile unsigned int *)0x1F000010) ^= (0x01 << nbit);
}
实例2
给定一个整型变量a,写两段代码,第一个设置a的bit3,第二个清除a的bit3。
特定位置1用|=
#define BIT3 (0x01 << 3)
static a;
void setBit3(void)
{
a |= (0x01 << 3);
}
特定位清零用&=~
#define BIT3 (0x01 << 3)
static a;
void clearBit3(void)
{
a &= ~(0x01 << 3);
}
读取第n位的值
(a>>n)&1
参考: