JAVA对小于4个字节的内置类型在做移位操作时,会先转换为int型,然后就是位的填充了(除了带符号的移位,都是填充0)
对于int类型,移位后,还是int类型,比如int i = 1; i << 16; 这时候i就变成65536了,如果正好移32位,int就是0了。
对于int强制转换成long,其实就是把int扩展成64位,高32位填0了
JAVA对小于4个字节的内置类型在做移位操作时,会先转换为int型,然后就是位的填充了(除了带符号的移位,都是填充0)
对于int类型,移位后,还是int类型,比如int i = 1; i << 16; 这时候i就变成65536了,如果正好移32位,int就是0了。
对于int强制转换成long,其实就是把int扩展成64位,高32位填0了