Pro*_*mer 9 c bit-manipulation
如果我使用它:
if(value & 4)检查该位是否已设置,那么如何检查该位是否未设置?
我试着用
if(!value & 4)或if(~value & 4)与if(value ^ 4)但他们没有工作.
das*_*ght 21
写入时if(value & 4),C检查结果是否为非零.从本质上讲,这意味着
if((value & 4) != 0) {
...
}
Run Code Online (Sandbox Code Playgroud)
因此,如果要检查未设置该位,请将相等的结果与零进行比较:
if((value & 4) == 0) {
...
}
Run Code Online (Sandbox Code Playgroud)
Kev*_*lia 10
你可以通过很多方式做到这一点,但最简单的(最简单的,需要最少的思考)只会否定你已经拥有的整个表达方式:
if (!(value & 4))
Run Code Online (Sandbox Code Playgroud)
简单地:
if ((value & 4) == 0)
Run Code Online (Sandbox Code Playgroud)
为什么?
如果value是 01110011
然后
01110011
&
00000100
--------
Run Code Online (Sandbox Code Playgroud)
将返回 0,因为第 4 位关闭。