重複の可能性:
ビット演算子の実際のユースケース
ビット演算子についてはよくわかりませんが&
、|
誰かがこれらの演算子が正確に何をしているのか説明してもらえますか?昨日http://www.cprogramming.com/tutorial/bitwise_operators.htmlでチュートリアルを読みましたが、コーディングに適用したいかどうかはわかりません。誰かに例を挙げてください。
重複の可能性:
ビット演算子の実際のユースケース
ビット演算子についてはよくわかりませんが&
、|
誰かがこれらの演算子が正確に何をしているのか説明してもらえますか?昨日http://www.cprogramming.com/tutorial/bitwise_operators.htmlでチュートリアルを読みましたが、コーディングに適用したいかどうかはわかりません。誰かに例を挙げてください。
|
演算子 (OR) :
------------------------ 0000 1110 1110 0101 ------------------------ b 1001 0011 0100 1001 ------------------------ a|b 1001 1111 1110 1101
オペレーターは、数字の 1 つにスポット1
があるかどうかを示します。1
&
演算子 (AND) :
------------------------ 0000 1110 1110 0101 ------------------------ b 1001 0011 0100 1001 ------------------------ a&b 0000 0010 0100 0001
演算子は0
、数値のいずれかである場合に与えます。
使用法:数字の一部だけが必要な場合 (2 番目の 4 つのセットとしましょう)、次のように記述できます。
a & 0x00f0
ビット演算子の使用は初心者にはお勧めできません。
これは非常に低レベルのプログラミングの質問です。メモリの最小ビットは「ビット」です。バイトは 8 ビットのチャンク、ワードは 16 ビットのチャンクなどです。ビット単位の演算子を使用すると、これらのチャンクのビットを変更/チェックできます。コードを書く目的によっては、これらの演算子が必要ない場合があります。
例:
unsigned char x = 10; /*This declares a byte and sets it to 10. The binary representation
of this value is 00001010. The ones and zeros are the bits.*/
if (x & 2) {
//Number 2 is binary 00000010, so the statements within this condition will be executed
//if the bit #1 is set (bits are numbered from right to left starting from #0)
}
unsigned char y = x | 1; //This makes `y` equal to x and sets the bit #0.
//I.e. y = 00001010 | 00000001 = 00001011 = 11 decimal