JAvaにおけるシフト演算子の心得のまとめ

1432 ワード

JAvaには3種類のシフト演算子があります
<
>>      :     右シフト演算子num>>1、numを2で割ることに相当
>>>    :     符号なしで右に移動し、符号ビットを無視し、空席を0で補正
これらのシフト演算がどのように使われているかを見てみましょう
 
  
/**
 *
 */
package com.b510.test;

/**
 * @author Jone Hongten
 * @create date:2013-11-2
 * @version 1.0
 */
public class Test {

    public static void main(String[] args) {
        int number = 10;
        //
        printInfo(number);
        number = number << 1;
        //
        printInfo(number);
        number = number >> 1;
        //
        printInfo(number);
    }

    /**
     * int
     * @param num
     */
    private static void printInfo(int num){
        System.out.println(Integer.toBinaryString(num));
    }
}


実行結果:
1010101001010上記の結果を揃えます.
43210      桁数------ 1010      10進数:10     元の数         number10100      10進数:20     1桁左に移動       number = number << 1; 1010      10進数:10     右に1けたずらす       number = number >> 1;
 
上のdemoを見て、今は左シフトと右シフトについてよく知ったのではないでしょうか.
対象:>>>
 符号なしで右に移動し、符号ビットを無視し、空席を0で補正
value >>> num     --   numシフト値valueが移動するビット数を指定します.
符号なし右シフトのルールは、符号ビット拡張を無視し、0が最上位を補う点だけを覚えています.  符号なし右シフト演算子>>32ビットと64ビットの値にのみ意味があります