ビット演算子の詳しい解説(C言語)

はじめに
C 言語のビット演算子は、データのバイナリ表現に対してビットレベルの演算を実行するために使用される演算子です。これらの演算子には、ビット単位の AND (&)、ビット単位の OR (|)、ビット単位の XOR (^)、およびビット単位の否定 (~) が含まれます。これらのビット単位の演算子は、バイナリ表現の取得など、さまざまなビットレベルの演算を実行するために使用できます。 、特定のビットを0または1に設定する、変数の値を交換するなど。これらは、低レベルのプログラミング、ビットレベルのコーディング、および最適化アルゴリズムで頻繁に使用されます。今日はビット演算子の使い方を紹介します。
ここに画像の説明を挿入します

記事ディレクトリ

1、&

& は、2 つのオペランドのバイナリ表現に対してビットごとの AND 演算を実行できるビットごとの AND 演算子です。まず、バイナリには 0 と 1 の数値しかないことは誰もが知っています。では、& はどのように動作するのでしょうか?
例を見てみましょう。以下は 8 と 11 のバイナリ表現です。
8: 1000
11:1011

& はビット単位の AND と呼ばれるため、2 つの 2 進数の対応する位置に従って AND 演算を実行する必要があります。たとえば、8 の 1 は 11 の 11 に対応し、0 は 0 に対応し、0 は 0 に対応します。が1に、0が1に対応します(私は前から後ろの順番がわかりやすいです)。
あるビットが両方とも1の場合、AND演算の結果は1になります。一方が1でもう一方が0の場合、結果は0になります。両方の値が0の場合、結果は0のままです。直列回路として、スイッチは0と1であり、1のときスイッチが閉じて電流が流れるようになります。
ここに画像の説明を挿入します

したがって、8&11 の結果は 1000、つまり 8 になります。

2、|

| は、& と同様のビット単位の OR 演算子です。例として 8 と 11 を使用してみましょう:
8: 1000
11:1011

特定のビットの両側が 1 の場合、結果は 1 になります。これを並列回路と考えると、スイッチがオンになっている限り、電流が流れます。
ここに画像の説明を挿入します

したがって、8|11 の結果は 1011、つまり 11 になります。

3,^

^ はビットごとの XOR 演算子です。例として 8 と 11 を引き続き使用します。
8: 1000
11:1011

あるビットの両側が 1 または 0 の場合、結果は 0 になります。両側が異なる (つまり、一方が 1、もう一方が 0) 場合、結果は 1 になります。つまり、あるビットが同じ場合は結果は0、異なる場合は結果は1になります。
したがって、8&11の結果は0011、つまり結果は3になります。

4、~

~ はビットごとの否定演算子です。例として 1 と -1 を取り上げます。
1: 00000000 00000000 00000000 00000001
-1:111111111 11111111 11111111 11111111

反転とは、0 が 1 になり、1 が 0 になることを意味するため、1 と -1 のビットごとの反転はそれぞれ次のようになります。
1: 11111111 1111111 1 11111111 11111110
-1: 00000000 00000000 00000000 00000000すると、1 =
(-1) + 1、-1 =
(1) + 1がわかり、正の数と負の数を簡単に変換できます。

終わり

ビット演算子についての共有はここまでです。ブロガーの話が良いと思ったら、ブロガーにフォロー、いいね、お気に入りを与えることを忘れないでください。次号でお会いしましょう!

おすすめ

転載: blog.csdn.net/Tokai___Teio/article/details/135113625