Java中的移位操作有点特殊,并不是你想移多少位就移多少位。如果是byte、short的话,会首先转化为int,最高位如果是0,则高位补0,如果最高位是1,则高位补1,然后和int类型一样,对其进行移位操作。移位时首先去除32求余,然后再移跟余数一样的位数,求得结果,而且结果并不改变被移位的那个原操作数。如果是long的话,首先去除64求余。