java有几种位运算

Java有6种基本位运算符,分为位逻辑运算(&, |, ^, ~)和位移运算(, >>>)。&按位与用于清零或判断标志位,|按位或用于设置标志位,^按位异或用于翻转位或交换数值,~按位取反逐位取反结果为补码形式。有符号右移高位补符号位,等价于除以2的幂,>>>无符号右移高位补0,常用于底层操作。实际开发中&、|、^、常用,>>>多见于网络或字节处理。

Java 有 6 种基本位运算符,分为两类:位逻辑运算(4 种)和位移运算(2 种)。

位逻辑运算符

对两个操作数的每一位进行逻辑运算,结果仍是整数。

  • &:按位与。对应位都为 1 才得 1,否则为 0。常用于清零某些位或判断标志位(如 flags & MASK != 0

    )。
  • |:按位或。对应位有一个为 1 就得 1。常用于设置标志位(如 flags | NEW_FLAG)。
  • ^:按位异或。对应位不同得 1,相同得 0。可用于翻转特定位(x ^ MASK),或交换两个整数(无需临时变量)。
  • ~:按位取反(单目)。对每个位取反,0 变 1,1 变 0。注意:对正数取反后是负数(补码表示),例如 ~5 得 -6。

位移运算符

将操作数的二进制位整体向左或向右移动指定位置,移出的位丢弃,空位补 0 或符号位。

  • :左移。高位丢弃,低位补 0。效果等价于乘以 2 的 n 次方(不溢出时),如 5 是 10。
  • >>:有符号右移。低位丢弃,高位补符号位(正数补 0,负数补 1)。等价于带符号整除 2 的 n 次方,如 -8 >> 1 是 -4。
  • >>>:无符号右移(也叫逻辑右移)。低位丢弃,高位一律补 0。适用于处理纯位模式(如解析字节流、掩码操作),负数也会变成很大的正数。

注意:>>>>> 都是右移,但语义不同;Java 没有无符号左移(因为左移补 0 对所有整数都一样)。

基本上就这些。实际开发中常用 &、|、^、>,>>> 在底层或网络编程中更常见。