C++のビット演算子
c++では3つのビット単位の演算子を使用できます。これらは、ビット単位のAND(&)、ビット単位のOR(|)、およびビット単位のXOR(^)です。
ビットごとのAND演算子(&)は、第1オペランドの各ビットを第2オペランドの対応するビットと比較します。両方のビットが1の場合、対応する結果ビットは1に設定されます。それ以外の場合、対応する結果ビットは0に設定されます。ビット単位の包括的AND演算子の両方のオペランドは、整数型である必要があります。たとえば、
#include <iostream> using namespace std; int main() { unsigned short a = 0x5555; // pattern 0101 ... unsigned short b = 0xAAAA; // pattern 1010 ... cout << hex << ( a & b ) << endl; }
これにより、出力が得られます-
0
ビットごとのOR演算子(|)は、第1オペランドの各ビットを第2オペランドの対応するビットと比較します。いずれかのビットが1の場合、対応する結果ビットは1に設定されます。それ以外の場合、対応する結果ビットは0に設定されます。ビット単位の包括的OR演算子の両方のオペランドは、整数型である必要があります。たとえば、
#include <iostream> using namespace std; int main() { unsigned short a = 0x5555; // pattern 0101 ... unsigned short b = 0xAAAA; // pattern 1010 ... cout << hex << ( a | b ) << endl; }
これにより、出力が得られます-
ffff
ビット単位の排他的論理和演算子(^)は、第1オペランドの各ビットを第2オペランドの対応するビットと比較します。一方のビットが0で、もう一方のビットが1の場合、対応する結果ビットは1に設定されます。それ以外の場合、対応する結果ビットは0に設定されます。ビット単位の排他的論理和演算子の両方のオペランドは整数型である必要があります。たとえば、
#include <iostream> using namespace std; int main() { short a = 0x5555; // pattern 0101 ... unsigned short b = 0xFFFF; // pattern 1111 ... cout << hex << ( a ^ b ) << endl; }
これにより、出力が得られます-
aaaa
これはパターン1010を表します...
-
C#ビット単位およびビットシフト演算子
ビット演算子はビットを処理し、ビットごとの演算を実行します。 C#でサポートされているビット演算子を次の表に示します。変数Aが60を保持し、変数Bが13を保持すると仮定します- 演算子 説明 例 & ビットごとのAND演算子は、両方のオペランドにビットが存在する場合、結果にビットをコピーします。 (A&B)=12、つまり0000 1100 | ビットごとのOR演算子は、いずれかのオペランドに存在する場合、ビットをコピーします。 (A | B)=61、つまり0011 1101 ^ ビットごとのXOR演算子は、ビットが両方ではなく
-
Pythonビット演算子
ビット演算子はビットを処理し、ビットごとの演算を実行します。 a=60の場合を想定します。およびb=13;これで、バイナリ形式では、それらの値はそれぞれ00111100と00001101になります。次の表に、Python言語でサポートされているビット演算子と、それぞれの例を示します。上記の2つの変数(aとb)をオペランドとして使用します- a = 0011 1100 b = 0000 1101 ----------------- a&b = 0000 1100 a|b = 0011 1101 a^b = 0011 0001 ~a = 1100 0011 Python言語で