【初心者向け】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」となります。シフト演算では、右シフトで値が半分になり、左シフトで値が倍増する様子が確認できます。
-
Pythonのビット演算子の種類と使い方をわかりやすく解説
ビット演算子(Bitwise Operators)とは、数値を2進数のビット単位で操作するための演算子です。Pythonでは、以下の6種類のビット演算子が定義されています。 Pythonで使えるビット演算子の一覧 &(ビット単位AND):両方のビットが1の場合のみ1を返します |(ビット単位OR):どちらか一方でも1であれば1を返します ^(ビット単位XOR・排他的論理和):片方のビットだけが1の場合に1を返します ~(ビット反転・補数):ビットが0なら1へ、1なら0へ反転します <<(左シフト):ビットを左へシフトし、右側の空いたビットは0で埋められます >>
-
Rubyのビット演算ツールボックス:基本の演算子から実践的な活用例、そして魔法のようなテクニックまで
Railsアプリの開発だけを続けていれば、ビット演算子を使う機会は一生訪れないかもしれません。プログラミングを学び始めたばかりの方なら、「ビット演算」という言葉自体を聞いたことがないという方もいるでしょう。 しかし、効率性が重視されリソースが限られたシステムに興味を持った瞬間から、ビット演算は不可欠な知識になります。ネットワークプロトコル、暗号技術、Unixのファイルパーミッション、組み込みシステムなど、さまざまな分野でビット演算が広く活用されています。 さらに言えば、コンピュータがどのようにして2つの数値を足し合わせているのかを本当に理解するには、ビット演算の仕組みを把握することが欠かせ