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

C#のビット単位右シフト演算子(>>)の使い方をわかりやすく解説

ビット単位右シフト演算子とは

ビット演算子(Bitwise Operator)は、数値をビット単位で扱い、1ビットずつ操作を行う演算子です。その中でもビット単位の右シフト演算子「>>」は、左側のオペランドの値を、右側のオペランドで指定されたビット数だけ右へ移動させる働きを持ちます。

たとえば、次のような値があったとしましょう。

60(2進数:0011 1100)

この値に対して、右へ2ビットシフトするには次のように記述します。

c = a >> 2;

2回の右シフトが行われると、値は次のように変化します。

15(2進数:0000 1111)

これは、各ビットが右に移動し、左側から空いた部分には符号ビット(正の数の場合は0)が埋められるためです。右シフトを1回行うごとに、値はおおよそ半分になっていくという特徴もあります。

サンプルコード

以下のコードを実行すると、C#におけるビット単位の右シフト演算子の動作を実際に確認できます。

using System;

namespace Demo {
   class Program {
      static void Main(string[] args) {
         int a = 60;   /* 60 = 0011 1100 */
         int c;
         c = a >> 2;   /* 15 = 0000 1111 */
         Console.WriteLine("c の値は {0} です", c);
         Console.ReadLine();
      }
   }
}

実行結果

c の値は 15 です

まとめ

右シフト演算子「>>」を使うことで、整数のビットを効率よく移動させることができます。特に高速な除算処理やフラグ管理などの場面で活用されるため、ビット演算の基本としてしっかり理解しておきましょう。

  1. Pythonの右シフト演算子(>>)とは?仕組みと使い方をわかりやすく解説

    右シフト演算子(>>)とはPythonにおける >> は右シフト演算子と呼ばれるビット演算子の一つです。この演算子は、第1オペランドを2進数(ビット列)として扱い、そのビットを第2オペランドで指定された桁数だけ右方向へ移動させます。シフトによって左側に空いた上位ビットには、すべて 0 が設定されます。つまり、正の整数に対しては符号が変わることなく値が半分ずつになっていくイメージです。基本的な動作イメージ数学的な観点で見ると、a >> n は「a を 2 の n 乗で割った商(小数点以下切り捨て)」と同じ結果になります。たとえば 100 >> 2

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

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