C /C++の左シフトおよび右シフト演算子
左シフト演算子では、左オペランドの値は、右オペランドで指定されたビット数だけ左に移動します。
これはC言語の左シフト演算子の例です
例
#include <stdio.h> int main() { int y = 28; // 11100 int i = 0; for(i;i<=3;++i) printf("Left shift by %d: %d\n", i, y<<i); return 0; }
出力
これが出力です
Left shift by 0: 28 Left shift by 1: 56 Left shift by 2: 112 Left shift by 3: 224
右シフト
右シフト演算子では、左オペランドの値は、右オペランドで指定されたビット数だけ右に移動します。
これがC言語の右シフト演算子の例です
例
#include <stdio.h> int main() { int x = 10; // 1010 int i = 0; for(i;i<2;i++) printf("Right shift by %d: %d\n", i, x>>i); return 0; }
出力
これが出力です
Right shift by 0: 10 Right shift by 1: 5
-
C#ビット単位およびビットシフト演算子
ビット演算子はビットを処理し、ビットごとの演算を実行します。 C#でサポートされているビット演算子を次の表に示します。変数Aが60を保持し、変数Bが13を保持すると仮定します- 演算子 説明 例 & ビットごとのAND演算子は、両方のオペランドにビットが存在する場合、結果にビットをコピーします。 (A&B)=12、つまり0000 1100 | ビットごとのOR演算子は、いずれかのオペランドに存在する場合、ビットをコピーします。 (A | B)=61、つまり0011 1101 ^ ビットごとのXOR演算子は、ビットが両方ではなく
-
C#のビット単位の右シフト演算子
ビット演算子はビットを処理し、ビットごとの演算を実行します。ビット単位の右シフト演算子では、左のオペランドの値は、右のオペランドで指定されたビット数だけ右に移動します。 以下のコードでは、値-があります。 60 i.e. 0011 1100 右シフト%マイナス; c = a >> 2; 2回右シフトすると15に変換されます- 15 i.e. 0000 1111 例 次のコードを実行して、C#でビット単位の右シフト演算子を実装してみてください- using System; using System.Collections.Generic; using System.Text;