2

今日もビット演算子を理解しようとしていますが、まだ少しあいまいなことがあります。|を組み合わせようとするまで、すべてが理にかなっています。〜を使用した演算子。例:number | ~number。ちなみに、私はすでに2の補数に関するウィキペディアの記事を読んでおり、その側面を理解しています(私は思います)。

------------------------------------------
| 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
------------------------------------------

&演算子likeを使用すると7 & ~5、両方の行に2列のみが設定されるため、期待される結果は2になります。ここで私を取得しているのは、7 | ~5-1を出力しているということです。すべての列に1が含まれているため255、または下の行が1ではなく0をカウントする可能性があるため5になると思います。しかし、それはそれらのどちらでもありません、それは-1です。

私は脳が痛くなるまでこれをグーグルで検索しましたが、これに対処する記事はどこにも見つかりません。誰かがここで何が起こっているのか知っていますか?

4

1 に答える 1

9

の結果7 | ~5は、すべて 1 のビット パターンです。これは 2 の補数で -1 です。

于 2013-01-15T22:40:28.410 に答える