1.>> 右移
去除低位后,最左边补充原先的符号位(即最高位)
以-1>>1为例子:
实例代码:
int h = -1;
System.out.println(Integer.toBinaryString(h));
int h1 = h >> 1;
System.out.println(Integer.toBinaryString(h1));
运行结果:
2.>>> 无符号右移
去除低位后,最左边补充0
以-1>>>1为例子:
实例代码:
int h = -1;
System.out.println(Integer.toBinaryString(h));
int h1 = h >>> 1;
System.out.println(Integer.toBinaryString(h1));
运行结果:
❗️这里无符号右移后符号位是0,没显示,可以看到只有31个1了。
3.<< 左移
去除高位后,最低位补0
以-1<<1为例子:
实例代码:
int h = -1;
System.out.println(Integer.toBinaryString(h));
int h1 = h << 1;
System.out.println(Integer.toBinaryString(h1));
运行结果:
4.有无符号左移<<<吗?
没有,因为左移不改变符号位(最高位),所以不会有。