文档介绍:移位运算[教程]移位运算java的移位操作详解,左移和右移首先要明白一点,这里面所有的操作都是针对存储在计算机中中二进制的操作,那么就要知道,正数在计算机中是用二进制表示的,负数在计算机中使用补码表示的。左移位:<<,有符号的移位操作左移操作时将运算数的二进制码整体左移指定位数,左移之后的空位用0补充右移位:>>,有符号的移位操作右移操作是将运算数的二进制码整体右移指定位数,右移之后的空位用符号位补充,如果是正数用0补充,负数用1补充。例子:publicstaticvoidmain(String[]args){(3<<2);//(-3<<2);//-(6>>2);//(-6>>2);//-6右移2位}输出结果12-121-2下面解释一下:00000000000000000000000000000011+3在计算机中表示0000000000000000000000000000001100左移2位,补0,结果为12----------------------------------------------------------------------------------------------00000000000000000000000000000011+3在计算机中表示11111111111111111111111111111100111111111111111111111**********-3在计算机中表示11111111111111111111111**********左移2位,补0,结果为负数,就是补码了,求原码1000000000000000000000000000101110000000000000000000000000001100结果-12----------------------------------------------------------------------------------------------这也说明了一个问题:在计算机中,以1开头的就是补码的形式,是负数。00000000000000000000000000000110+6在计算机中表示方法0000000000000000000000000000000110右移两位,正数补0,结果为1----------------------------------------------------------------------------------------------00000000000000000000000000000110+6在计算机中表示方法11111111111111111111111111111001111111111111111111111**********-6在计算机中的表示11111111111111111111111**********右移两位,结果为负数1000000000000000000000000000000110000000000000000000000000000010结果为-2这个地方很容易弄混,多想几次就会慢慢理解了。上面解释