Java中的位运算有七种: > 右移 >>> 无符号右移 & 位与 | 位或 ~ 位非 ^ 位异或 其中位非(~)是一元运算符,其他六个都是二元运算符。 这些位运算符都是作用在二进制的数上的,先列一个表描述一下这几种位运算符: 下面来一一介绍一下这几种位运算符 位运算符介绍 1、 6 0000 0000 0000 0000 0000 0000 0001 1100 -> 6 > 右移 两个右尖括号表示右移运算符,运算符规则是:各二进位全部右移若干位,正数高位补0,负数高位补1,低位丢弃。 例如: 12 >> 2 = 3 0000 0000 0000 0000 0000 0000 0000 1100 -> 12 0000 0000 0000 0000 0000 0000 0000 0011 -> 12 >> 2 = 3 因为12是正数,右移过程中高位补上两个0,低位丢弃,得出来的结果就是3。例如:-12 >> 2 = -3 1111 1111 1111 1111 1111 1111 1111 0100 -> -12 1111 1111 1111 1111 1111 1111 1111 1101 -> -12 >> 2 = -3 因为-12是负数,右移过程中高位补上两个1,低位丢弃,得出来的结果就是-3。右移常被用来做 / (2 ^ n)的运算,因为直接基于二进制运算,所以右移效率比 / (2 ^ n)高。 3、>>> 无符号右移 三个右尖括号表示无符号右移运算符,运算符规则是:各二进位全部右移若干位,高位补0,低位丢弃。 例如: 12 >>> 2 = 3 0000 0000 0000 0000 0000 0000 0000 1100 -> 12 0000 0000 0000 0000 0000 0000 0000 0011 -> 12 >>> 2 = 3 我们将12的二进位向右移动两位,高位补上两个0,低位丢弃,得出来的结果就是24。例如:-12 >>> 2 = 1073741821 1111 1111 1111 1111 1111 1111 1111 0100 -> -12 0011 1111 1111 1111 1111 1111 1111 1101 -> -12 >> 2 = 1073741821 我们将-12的二进位向右移动两位,高位补上两个0,低位丢弃,得出来