为什么10&(!5)返回零?

Moh*_*kar 0 c++ math binary

我一直在尝试使用c ++跟随代码,我无法弄清楚为什么返回零.

10 & (!5)
我们知道二进制10是1010,5是0101而不是(5)是1010.让我们来看看:

1010  //Which represent 10
1010  //Which represent not(5)
------AND
1010
Run Code Online (Sandbox Code Playgroud)

这应该实际上返回10而不是零.我错了吗 ?

Lil*_*ard 16

因为!是布尔否定,不是按位否定,所以你已经有效地说了10 & 0.

你最好不要尝试 10 & ~5