Bitwise 7 | ~5 = -1; 真的吗?

Sco*_* C. 2 php bit-manipulation

我今天一直试图找出按位运算符,有些事情对我来说仍然有点模糊.在我开始尝试组合|之前,一切都有意义 运算符〜,例如:number | ~number.在旁注中,我已经阅读了关于这两个补码的维基百科文章,并了解它的这一方面(我认为).

------------------------------------------
| 128 | 64 | 32 | 16 |  8 |  4 |  2 |  1 |
------------------------------------------
|   0 |  0 |  0 |  0 |  0 |  1 |  1 |  1 | = 7
------------------------------------------
|   1 |  1 |  1 |  1 |  1 |  0 |  1 |  0 | = ~5 or -6
------------------------------------------
Run Code Online (Sandbox Code Playgroud)

使用&运算符会7 & ~5产生预期的结果2,因为在两行中只设置了2列.我在这里得到的7 | ~5是输出-1.我希望它会是255,因为每列都有一个1或5,因为底行可能会计算0而不是1.但它不是那些,它是-1.

我用谷歌搜索了这个,直到我的大脑受伤,我找不到任何一篇解决这个问题的文章.有谁知道这里发生了什么?

Ted*_*opp 9

结果7 | ~5是所有的模式.这是两个补码中的-1.