<<, >> 都是移位操作符,是作二进制移位的有符号左移和右移。
而 >>> 表示无符号右移,也叫逻辑右移,忽略符号位(无论正负),空位都以0补齐
操作符的前后都要求是整型(byte, short, int, long)
例如:
m >> n:
左边操作数 m 表示" 被移位的整数"
右边操作数 n 表示"移位的位数"
num << 1, 相当于num 乘以2
num >> 1, 相当于num 除以2
计算机内部使用2进制表示数字的,1 << i,就是把二进制整数1左移20位,
即 ,
000|0 0000 0000 0000 0000 000|1 变成
000|1 0000 0000 0000 0000 000|0 正好20位
(不算最开始那位,从移动后的第一位开始算)
表示成十进制实际上是2^20,等于1048576。
(!注意,整型数的最高位是符号位,0表示正数,1表示负数,有符号移位表示移动时考虑符号,因此移位时有可能会溢出,而且这个移位是循环的,也就是说移到该类型的最高位再移一位就跑到最低位,比如int是32位,1<<32得到的还是1, 1<<31得到int能表示的最大负数)。