1. ビット&演算子
すべてのデータはバイナリ表現でメモリに保存されると前述しました。そのため、かなり昔、プログラマーは 2 進数を扱うための興味深い方法をたくさん考え出しました。たとえば、Java には、数値のバイナリ表現のビットを操作する論理演算子&(AND)、| (OR)、~(NOT または補数)、および^(XOR - 排他的論理和) があります。
a & b
&(AND) 演算子
この演算子は論理&(AND) 演算子によく似ていますが、2 つではなく 1 つのアンパサンドで表される点が異なります。
そしてそれは個々のビットに適用されます。各オペランドはビットの配列として扱われ、i結果の 番目のビットはi2 つのオペランドのそれぞれの 番目のビットを使用して計算されます。
a 結果の最初のビットは、数値の最初のビットと数値の最初のビットに基づいて計算され、2 番目のビットはb数値の 2 番目のビットa と数値の 2 番目のビットに基づいて計算されますb。
(AND)演算子&は、「数値の対応するビットが 1 に等しく、数値の対応するビットがa1 に等しい場合にのみAND、結果のビットbが 1 に等しい」ことを意味します。
1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
例:
| 例 | 結果 |
|---|---|
|
|
|
|
|
|
|
|
2. ビット|演算子
この演算子は論理|(OR) 演算子とよく似ていますが、2 本の垂直線ではなく 1 本の垂直線で示される点が異なります。
a | b
そしてそれは個々のビットに適用されます。各オペランドはビットの配列として扱われ、結果の i 番目のビットは 2 つのオペランドのそれぞれの i 番目のビットを使用して計算されます。
ビット単位|(OR) 演算子は、「数値の対応するビットが 1 に等しい場合、数値の対応するビットaが 1 に等しい場合、結果のビットは 1 に等しい」ことを意味します。ORb
1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
例:
| 例 | 結果 |
|---|---|
|
|
|
|
|
|
|
|
両方の数値の対応するビット (同じ位置にあるビット) が 0 の場合にのみ、結果の対応するビットが 0 に等しくなります。
3. ビット単位^(XOR または「排他的論理和」) 演算子
演算子はXOR、排他的論理和とも発音され、 という記号で示されます^。キーボードで入力するには、shift + 6を押します(英語キーボード レイアウトの場合)。
a ^ b
この演算子は、OR名前が似ているという点も含めて、次の演算子に似ています。XOR
ビット単位^(XOR) 演算子は、「数値の対応するビットが 1 に等しい場合、結果のビットはa1 に等しくOR、数値の対応するビットがb1 に等しい場合は、両方が同時に等しいわけではない」ことを意味します。
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0
例:
| 例 | 結果 |
|---|---|
|
|
|
|
|
|
|
|
両方の数値の対応するビット (同じ位置にあるビット) が異なる場合にのみ、結果の対応するビットが1 に等しくなります。ビットが同じ場合、結果のビットはゼロになります。
4. ビット単位~(NOT、COMPLEMENT) 演算子
それが何をするかはすでに推測できると思います。この演算子は論理 (NOT) 演算子とよく似ていますが、感嘆符ではなくチルダ!で示されます。
~a
これは単項演算子であり、2 つの数値ではなく 1 つの数値に適用されることを意味します。この単一のオペランドの前に表示されます。
ビット~演算子は、「数値の対応するビットが 0 の場合、結果のビットはa1 であり、数値の対応するビットが 1 の場合、結果のビットは 0 であるa」ことを意味します。
~1 = 0
~0 = 1
例:
| 例 | 結果 |
|---|---|
|
|
|
|
|
|
|
|
1この演算子は、になるビット0と になるビットを0単純に変更します1。
GO TO FULL VERSION