Java提供的位运算符有:左移( > ) 、无符号右移( >>> ) 、位与( & ) 、位或( | )、位非( ~ )、位异或( ^ ),除了位非( ~ )是一元操作符外,其它的都是二元操作符。 1、左移( > ) ,右移同理,只是方向不一样罢了(感觉和没说一样) System.out.println(5>>2);//运行结果是1还是先将5转为2进制表示形式: 0000 0000 0000 0000 0000 0000 0000 0101 然后右移2位,高位补0: 0000 0000 0000 0000 0000 0000 0000 0001 3、无符号右移( >>> ) 我们知道在Java中int类型占32位,可以表示一个正数,也可以表示一个负数。正数换算成二进制后的最高位为0,负数的二进制最高为为1 例如 -5换算成二进制后为: 1111 1111 1111 1111 1111 1111 1111 1011 (刚开始接触二进制时,不知道最高位是用来表示正负之分的,当时就总想不通。。明明算起来得到的就是一个正数-_-) 我们分别对5进行右移3位、 -5进行右移3位和无符号右移3位: package com.xcy; public class Test { public static void main(String[] args) { System.out.println(5>>3);//结果是0 System.out.println(-5>>3);//结果是-1 System.out.println(-5>>>3);//结果是536870911 } } 我们来看看它的移位过程(可以通过其结果换算成二进制进行对比): 5换算成二进制: 0000 0000 0000 0000 0000 0000 0000 0101 5右移3位后结果为0,0的二进制为: 0000 0000 0000 0000 0000 0000 0000 0000 // (用0进行补位) -5换算成二进制: 1111 1111 1111 1111 1111 1111 1111 1011 -5右移3位后结果为-1,-1的二进制为: 1111 1111 1111 1111 1111 1111 1111 1111 // (用1进行补位) -5无符号右移3位后的结果 536870911 换算成二进制: 0