Amazonでお得な買い物

【C#超入門】ビット演算子の基礎

C# ビット演算子

今回は、C#のビット演算子について解説していきます。

目次
スポンサーリンク

ビット演算子とは?

ビット演算子は、コンピュータープログラム内でビット(0と1の二進数で表される最小の情報単位)を操作するための演算子です。

これらの演算子は、整数の二進数表現に対してビット単位で操作を行うのに使用されます。

ビット演算子の種類

ビット演算子には以下の種類があります。

ビット演算子の種類C#コード役割
AND(論理積)&(アンパサンド)2つのビットが1の場合、結果は1になります。それ以外の場合、結果は0です。
例: 1010 & 1100 = 1000
OR(論理和)|(パイプ)2つのビットのうち、少なくとも1つが1の場合、結果は1になります。両方が0の場合、結果は0です。
例: 1010 | 1100 = 1110
XOR(排他的論理和)^(キャレット)2つのビットが異なる場合、結果は1になります。同じ場合、結果は0です。
例: 1010 ^ 1100 = 0110
NOT(ビット反転)~(チルダ)ビットを反転させ、1を0に、0を1に変えます。
例: ~1010 = 0101
左シフト<<指定されたビット数だけ左にビットをシフトします。右側には0が追加されます。
例: 1010 << 2 = 0010
右シフト>>指定されたビット数だけ右にビットをシフトします。左側には符号ビット(最上位ビット)の値が追加される場合があります。
例: 1010 >> 2 = 0010
ビット演算子の種類

ビット演算子を使ったサンプルコード

C#のビット演算子を使ってサンプルコードをいくつか紹介します。

AND(論理積)/OR(論理和)/XOR(排他的論理和)/NOT(ビット反転)を使ったサンプルコード

サンプルコード

// See https://aka.ms/new-console-template for more information
int num1 = 12;  // 2進数表示で1100
int num2 = 6;   // 2進数表示で0110

Console.WriteLine("num1の2進数表示: " + Convert.ToString(num1, 2));
Console.WriteLine("num2の2進数表示: " + Convert.ToString(num2, 2) + Environment.NewLine);

int result = num1 & num2; // ビットAND演算
Console.WriteLine("ビットANDの結果: " + result); // 結果は 4 (2進数表示で0100)
Console.WriteLine("2進数表示: " + Convert.ToString(result, 2) + Environment.NewLine);

result = num1 | num2; // ビットOR演算
Console.WriteLine("ビットORの結果: " + result); // 結果は 14 (2進数表示で1110)
Console.WriteLine("2進数表示: " + Convert.ToString(result, 2) + Environment.NewLine);

result = num1 ^ num2; // ビットXOR演算
Console.WriteLine("ビットXORの結果: " + result); // 結果は 10 (2進数表示で1010)
Console.WriteLine("2進数表示: " + Convert.ToString(result, 2) + Environment.NewLine);

result = ~num1; // ビットNOT演算
Console.WriteLine("ビットNOTの結果: " + result); // 結果は -13 (2進数表示で-1101)
Console.WriteLine("2進数表示: " + Convert.ToString(result, 2) + Environment.NewLine);

実行結果

num1の2進数表示: 1100
num2の2進数表示: 110

ビットANDの結果: 4
2進数表示: 100

ビットORの結果: 14
2進数表示: 1110

ビットXORの結果: 10
2進数表示: 1010

ビットNOTの結果: -13
2進数表示: 11111111111111111111111111110011

左シフト/右シフトを使ったサンプルコード

左シフト<<、右シフト>>を使ったサンプルコードはこちら。

サンプルコード

int number = 10; // 10の2進数表現は 1010

Console.WriteLine("2進数表示: " + Convert.ToString(number, 2));

// 左シフトして値を2倍にする
int leftShifted = number << 1; // 1010 << 1 = 10100 (10進数では20)
Console.WriteLine("左シフト結果: " + leftShifted);
Console.WriteLine("2進数表示: " + Convert.ToString(leftShifted, 2));

// 右シフトして値を半分にする
int rightShifted = number >> 1; // 1010 >> 1 = 101 (10進数では5)
Console.WriteLine("右シフト結果: " + rightShifted);
Console.WriteLine("2進数表示: " + Convert.ToString(rightShifted, 2));

Console.ReadLine();

実行結果

2進数表示: 1010
左シフト結果: 20
2進数表示: 10100
右シフト結果: 5
2進数表示: 101

int型の配列を直接、左右にビットシフトさせることができました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

都内の精密機器を作っている会社に勤務している14年目のエンジニアです。趣味は美味しいものを食べることとゴルフ。プログラムについて今まで学んだことをわかりやすく発信するサイトを目指しています。

コメント

コメントする

目次