public class MoveStep {
public static void main(String[] args) { //原始数二进制 int number = 5; printInfo(number); //左移一位 :10 number = number << 1; printInfo(number); //右移一位 :5 number = number >> 1; printInfo(number); //无符号右移,忽略符号位,空位都以0补齐,如下表示:右移一位,结果为:2 number = number >>> 1; printInfo(number); //如下表示:右移二位 ,如果移到最后,全部没有了,二进制的个位就是:0 number = number >>> 2; printInfo(number); } /** * 二进制数 转换为 十进制的算法: * 10102`0 *0 + 2`1 *1 + 2`2*0 + 2`3*1 =0 + 2 + 0 + 8 =10 * 101002`0 *0 + 2`1 *0 +2`2 *1 +2`3 *0 +2`4 *1 =0 + 0 + 4 + 0 + 16 = 20 * 10102`0 *0 + 2`1 *1 + 2`2*0 + 2`3*1 =0 + 2 + 0 + 8 =10 * 101 2`0 *1 + 2`1 *0 + 2`2*1 = 1 + 0 + 4 = 5 * @param num */ private static void printInfo(int num){ System.out.println(num +"----"+Integer.toBinaryString(num)); }}
输出结果: