关于位移:
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);
}
/**
* 二进制数 转换为 十进制的算法:
* 1010 2`0 *0 + 2`1 *1 + 2`2*0 + 2`3*1 =0 + 2 + 0 + 8 =10
* 10100 2`0 *0 + 2`1 *0 +2`2 *1 +2`3 *0 +2`4 *1 =0 + 0 + 4 + 0 + 16 = 20
* 1010 2`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));
}
}