<< 位左移
>> 位右移
~ 取反
^ 异或
unsigned int p0 = 0xF0F0F0F0; // 从右到左依次为第0位、第1位、第2位...第31位
p0是一个寄存器 八位的 每一位有0和1两种状态,1激活态,0未激活。
现想把第七位的的激活态改为未激活态,那该怎么做呢?
自己可以写出 p = 0xFFFFFF7F p0 = p0 & p 进行操作 可得 F0F0F070
那复杂一点,对于一个未知的p0,p0 = 0x???????? 使得第i位(i对3取余为0的位)强制置为0(未激活态)的话
要是直接写出p太麻烦了,我们可以这样:
unsigned int p0 = 0xF0F0F0F0;
int i;
for(i = 0;i < 32;i ++)
{
if(i % 3 == 0)
{
p0 &= ~(1 << i); //我们一位一位的去强制0
}
}
printf("%X",p0);
& 置0
| 置1
^取反
4645

被折叠的 条评论
为什么被折叠?



