ビット演算を理解する
1.ビット演算
(1)どの
プログラムのすべての数値がコンピュータメモリにバイナリ形式で保存されているか。ビット単位の真理は、メモリ演算の直接整数のビットです。
(2)
ビット演算はメモリデータを直接操作し、10進数に変換する必要がないため、処理速度が非常に速いのはなぜですか。
2.ビット演算の使用
ビット演算 | シンボル | 説明 | ルール | 実用 |
---|---|---|---|---|
ビットと | & | 対応するビットは1と同じで、1を取得します | 0&0 = 0; 0&1 = 0; 1&0 = 0; 1&1 = 1 | and演算は通常、2進ビット演算に使用されます。たとえば、数値と1の結果は、2進の最後のビットを取得します。これは、整数のパリティを決定するために使用できます。2進数の最後のビットは0で、数値が偶数であることを示し、最後のビットは1で、数値が奇数であることを示します。 |
ビットまたは(または) | | | 対応するビットは1で、1です。 | 0 | 0 = 0; 1 | 0 = 1; 0 | 1 = 1; 1 | 1 = 1 | or演算は通常、バイナリの特定のビットに対する無条件の割り当てに使用されます。たとえば、数値または1の結果は、バイナリの最後のビットを強制的に1にすることです。2進数の最後のビットを0に変更する必要がある場合は、この数値の後に1または1を引くだけです。実際の意味は、この数値を最も近い偶数に強制することです。 |
ビット排他的論理和(xor) | ^ | 対応するビットは異なりますか?違いは1です。 | 0 ^ 0 = 0; 1 ^ 0 = 1; 0 ^ 1 = 1; 1 ^ 1 = 0 | 排他的論理和は次のように定義できるため、xor演算は通常、バイナリの特定のビットを反転するために使用されます。0と1の排他的論理和は変更されず、排他的論理和1が反転されます。xor演算の逆演算はそれ自体です。つまり、2つのXOR演算の最終結果は変更されません。つまり、(a xor b)xor b = aです。xor演算は、単純な暗号化に使用できます。 |
否定操作(ではない) | 〜 | 各ビットを反転します | データの各バイナリビットを反転します。つまり、1を0に変更し、0を1に変更します。 | |
左にシフト(shl) | << | オペランドのすべてのバイナリビットは、数ビット左にシフトされます | a << bは、aを2進数に変換した後、左にbビットシフトすることを意味します(後でbゼロを追加します)。これは、2をbの累乗で乗算することと同じです。 | 左シフト演算は乗算よりもはるかに高速です |
右シフト(shr) | >> | 「>>」の左側にあるオペランドのすべてのバイナリビットを数ビット右にシフトします | a >> bは、バイナリの右シフトをbビット(最後のbビットを削除)することを意味します。これは、aを2でbの累乗(丸め)で除算することと同じです。 | 除算と比較して、右にシフトするとプログラムの効率が大幅に向上します |
ノート:
主な参考資料: