Java中的位移操作符分为三种:<<,>>和>>>
首先说说这三种操作符的共同特:
- 它们左操作数均为int或long类型,如果是其他整型,则会升级到int型,浮点数类型不支持
- 对于右操作数,若左操作数为int型,则只取右操作数的末五位,若为long型,则只取六位。举个例子,1<<32这个操作,其结果是1,而不是0,这是因为32的二进制表示中末五位是0,因此其实这个操作什么都没做,结果还是0。
说完了共同点,再说不同点,其实不同点显而易见,<<是左移操作符,跟其它两个不同。需要注意的是>>>是无符号操作符,即它右移之后由0填充其最高位,而>>是有符号操作符,即右移之后由原来的符号位填充最高位。