NFCONT&=~(1<<1)和NFCONT&=0<<1区别?

在这里插入图片描述
我想问下,划线部分为什么每次都要先变成1再变成0,为什么不能直接NFCONT&=0<<1?

答:因为是对NFCONT 指定的位进行清零操作,**同时其他的位要保持不变。**
0 << 1 = 0
~(1 << 1) = 0xFFFFFFFD
很明显第一种会改变其他的位。

~(1<<1) 是 ~2 结果是 -3
0<<1结果还是0