今日もビット演算子を理解しようとしていますが、まだ少しあいまいなことがあります。|を組み合わせようとするまで、すべてが理にかなっています。〜を使用した演算子。例: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です。
私は脳が痛くなるまでこれをグーグルで検索しましたが、これに対処する記事はどこにも見つかりません。誰かがここで何が起こっているのか知っていますか?