2

我今天一直在尝试再次找出按位运算符,有些事情对我来说仍然有点模糊。在我开始尝试结合 | 之前,一切都是有意义的。带有 ~ 的运算符,例如: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
------------------------------------------

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

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

4

1 回答 1

9

的结果7 | ~5是全为 1 的位模式。这是二进制补码中的 -1。

于 2013-01-15T22:40:28.410 回答