java中有三种移位运算符
<< : 左移运算符,num << 1,相当于num乘以2
>> : 右移运算符,num >> 1,相当于num除以2
>>> : 无符号右移,忽略符号位,空位都以0补齐
package per.peter;
public class Main {
public static void main(String[] args) {
int number = 100;
System.out.println("原始二进制:" + Integer.toBinaryString(number) + "十进制:" + number);
number = number << 1;
System.out.println("左移一位:" +Integer.toBinaryString(number) + "十进制:" + number);
number = number >> 1;
System.out.println("右移一位:" +Integer.toBinaryString(number) + "十进制:" + number);
number = number >>> 2;
System.out.println("无符号右移两位:" +Integer.toBinaryString(number) + "十进制:" + number);
}
}
输出结构:
原始二进制:1100100十进制:100
左移一位:11001000十进制:200
右移一位:1100100十进制:100
无符号右移两位:11001十进制:25
注意: 若移动的位数超过了该类型的位数,系统会自动对移动位数取模。例如:int(32位) 如果右移33位,则系统自动对33取模,33%32 = 1,变成右移动一位。
本文是日常开发的随手记录,如有问题,请博内留言以帮助我改正和完善,一起努力,一起学习,一起进步!如果觉得有帮助,记得赞一个哟。