Java には 3 つのシフト演算子があります
<< : : 左シフト演算子、num << 1、これは num を 2 で乗算することに相当します
>> : : 右シフト演算子、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)); } }
実行結果は次のとおりです:
1010 10100 1010
上記の結果を並べてみましょう:
位数 -------- 十进制:10 原始数 number 十进制:20 左移一位 number = number << 1; 十进制:10 右移一位 number = number >> 1;
上記のデモを読んで、左シフトと右シフトについてよく理解できましたか? >>>
符号なし右シフト、符号ビットを無視し、ギャップを 0
value >>> num -- num は値をシフトする桁数を指定します。
符号なし右シフトのルールについて 1 つだけ覚えておいてください。符号ビット拡張を無視し、最上位ビットを 0 で埋めてください。符号なし右シフト演算子>>> は、32 ビット値と 64 ビット値に対してのみ意味を持ちます。
Java のその他のシフト演算子: <<,>>,>>> 関連記事をまとめた PHP 中国語 Web サイトに注目してください。