シフト演算のサンプルです。
サンプルソース
例)シフト演算を行う
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class ShiftSample { public static void main(String args[]) { //シフト演算 int a = 16; System.out.println(a<<1); //1ビット左シフト System.out.println(a<<2); //2ビット左シフト System.out.println(a>>1); //1ビット右シフト System.out.println(a>>2); //2ビット右シフト } } |
- (結果)
- C:\>java ShiftSample 32 64 8 4
シフト演算解説
シフト演算は、まず対象の数値を2進数にして考えます。
そしてその2進数のビットを左右にずらす(シフトする)ことで演算を行います。
上記サンプルを例にしますと、元となる数字16を2進数にすると、
「00010000」(=16)です。
これを1ビット左シフトさせると、全てのビットを左へ1つずつずらすことになるので、
「00100000」(=32)となります。
(ずらすことで1桁目に必要となる部分にはゼロが入ります。)
同じように元の数字を2ビット左シフトさせると、
「01000000」(=64)となります。
今度は元の数字を1ビット右シフトさせると、
「00001000」(=8)となります。
(ずらすことで一番左に必要となる部分にはゼロが入ります。)
結果、桁落ちしない限り
左シフトさせると2倍、4倍、8倍・・・となり、
右シフトさせると1/2倍、1/4倍、1/8倍となりますので、
シフト演算では倍数の計算を簡単に行うことができます。
また、シフト演算はコンピュータが理解しやすい形式の演算なので処理速度が速いことも特徴です。