C语言 位运算和逻辑运算

#include <stdio.h>
#define MASK 4
void main(void) {
 unsigned int x=7;
 x<<=1;
 x&=~MASK;
 printf("%#X\n",x);
} //输出0XA 为什么
阅读 3.6k
1 个回答
x = 7;   //0111
x << 1;  //1110
x &=~MASK;  //相当于 x &=~(1<<2), 也就是2位置0, 最后结果为1010

二进制1010 相当于十六进制为0XA.
&=~ MASK ,是很常见的位置0操作, MASK为1的位会被置0

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏