Java BitwiseOperators 位运算符

2014年03月18日 陈鑫杰

位运算

在处理整数型数值时,可以直接对组成整形数值的各个位进行操作。
整数型数值在进行位运算前,都需要转换成相应的二进制数。byte 、short 和 char 类型在运算时都会转变成 int 类型(占4个字节),实际移动的次数是该次数与32的余数,例如:移动34次与移动2次产生的结果是一致的。long 类型(占8个字节),实际移动的次数是该次数与64的余数,例如:移动66次与移动2次产生的结果是一致的。
Java使用补码的方式将整数型数值转换成二进制数,整数高位补0,负数高位补1,例如:

0000 0010 // 2
1111 1110 // -2

Java 提供的操作符有:&、|、^、~、«、»、»>。

  • & 按位与 And

0010 1010 // 42
0000 1111 // 15
0000 1010 // 42&15

  • 按位或 Or

0010 1010 // 42
0000 1111 // 15
0010 1111 // 42|15

  • ^ 按位异或 Xor

0010 1010 // 42
0000 1111 // 15
0010 0101 // 42^15

  • ~ 按位非 Not

0010 1010 // 42
1101 0101 // ~42

  • « 按位左移 将二进制数向左移动对应的位数,高位移出(舍弃),低位的空位补零。

0010 1010 // 42
1010 1000 // 42«2

  • >> 带符号右移 将二进制数向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1.

0010 1010 // 42
0000 1010 // 42>>2
1101 0110 // -42
1111 0101 // -42>>2

  • >>> 无符号右移 将二进制数向右移动对应的位数,低位移出(舍弃),高位的空位补零。

0010 1010 // 42
0000 1010 // 42>>>2
1101 0110 // -42
1111 0101 // -42>>>2

(转载本站文章请注明作者和出处 FoamValue – www.foamvalue.com ——=== 访问 404页面 寻找遗失儿童。 ===——