JAvaにおけるシフト演算子の心得のまとめ
1432 ワード
JAvaには3種類のシフト演算子があります
<
>> : 右シフト演算子num>>1、numを2で割ることに相当
>>> : 符号なしで右に移動し、符号ビットを無視し、空席を0で補正
これらのシフト演算がどのように使われているかを見てみましょう
実行結果:
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ビットの値にのみ意味があります
<
>> : 右シフト演算子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ビットの値にのみ意味があります