Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

【初心者向け】C言語のビット演算子の種類と使い方を徹底解説

C言語のビット演算子とは

ビット演算子とは、変数の値をビット単位で操作するための演算子です。C言語には、論理演算とシフト演算を中心に、以下の6種類のビット演算子が用意されています。

演算子名称
&ビットAND(論理積)
|ビットOR(論理和)
^ビットXOR(排他的論理和)
~ビット補数(1の補数)
<<左シフト
>>右シフト

各演算子の動作

  • &(AND):対応する2つのビットが両方とも1のときに1を返します。
  • |(OR):対応するビットのどちらか一方でも1であれば1を返します。
  • ^(XOR):対応するビットが異なる場合に1を返します。
  • ~(補数):すべてのビットを反転させる単項演算子です。
  • <<(左シフト):ビットを指定した桁数だけ左にずらし、空いた右側のビットは0で埋められます。
  • >>(右シフト):ビットを指定した桁数だけ右にずらします。

それでは、実際のコードでビット演算子の動きを確認してみましょう。

サンプルコード

#include <stdio.h>
int main() {
    int x = 10;
    int y = 28;
    int i = 0;
    printf("Bitwise AND : %d\n", x&y);
    printf("Bitwise OR : %d\n", x|y);
    printf("Bitwise XOR : %d\n", x^y);
    printf("Bitwise Complement : %d,%d\n", ~x,~-y);
    for(i;i<2;i++)
    printf("Right shift by %d: %d\n", i, x>>i);
    for(i;i<=3;++i)
    printf("Left shift by %d: %d\n", i, y<<i);
    return 0;
}

実行結果

Bitwise AND : 8
Bitwise OR : 30
Bitwise XOR : 22
Bitwise Complement : -11,27
Right shift by 0: 10
Right shift by 1: 5
Left shift by 2: 112
Left shift by 3: 224

実行結果のポイント

x = 10 と y = 28 の場合、AND演算(x&y)は共通して立っているビットのみが残るため「8」、OR演算(x|y)はいずれかに立っているビットがすべて残るため「30」になります。また、補数演算(~x)はビット反転によって符号が変わるため「-11」となります。シフト演算では、右シフトで値が半分になり、左シフトで値が倍増する様子が確認できます。

  1. Pythonのビット演算子の種類と使い方をわかりやすく解説

    ビット演算子(Bitwise Operators)とは、数値を2進数のビット単位で操作するための演算子です。Pythonでは、以下の6種類のビット演算子が定義されています。 Pythonで使えるビット演算子の一覧 &(ビット単位AND):両方のビットが1の場合のみ1を返します |(ビット単位OR):どちらか一方でも1であれば1を返します ^(ビット単位XOR・排他的論理和):片方のビットだけが1の場合に1を返します ~(ビット反転・補数):ビットが0なら1へ、1なら0へ反転します <<(左シフト):ビットを左へシフトし、右側の空いたビットは0で埋められます >>

  2. Rubyのビット演算ツールボックス:基本の演算子から実践的な活用例、そして魔法のようなテクニックまで

    Railsアプリの開発だけを続けていれば、ビット演算子を使う機会は一生訪れないかもしれません。プログラミングを学び始めたばかりの方なら、「ビット演算」という言葉自体を聞いたことがないという方もいるでしょう。 しかし、効率性が重視されリソースが限られたシステムに興味を持った瞬間から、ビット演算は不可欠な知識になります。ネットワークプロトコル、暗号技術、Unixのファイルパーミッション、組み込みシステムなど、さまざまな分野でビット演算が広く活用されています。 さらに言えば、コンピュータがどのようにして2つの数値を足し合わせているのかを本当に理解するには、ビット演算の仕組みを把握することが欠かせ