按位运算符

Java定义了几个按位运算符,可以将其应用于整数类型long,int,short,char和byte。

按位运算符对位执行,并执行逐位运算。假设a = 60和b = 13; 现在以二进制格式,他们将如下 -

a = 0011 1100

b = 0000 1101

-----------------

a&b = 0000 1100

a | b = 0011 1101

a ^ b = 0011 0001

a = 1100 0011

假设整数变量A保持60,变量B保持13,则 -

public class Test {   public static void main(String args[]) {      int a = 60;	/* 60 = 0011 1100 */      int b = 13;	/* 13 = 0000 1101 */      int c = 0;      c = a & b;        /* 12 = 0000 1100 */      System.out.println("a & b = " + c );      c = a | b;        /* 61 = 0011 1101 */      System.out.println("a | b = " + c );      c = a ^ b;        /* 49 = 0011 0001 */      System.out.println("a ^ b = " + c );      c = ~a;           /*-61 = 1100 0011 */      System.out.println("~a = " + c );      c = a << 2;       /* 240 = 1111 0000 */      System.out.println("a << 2 = " + c );      c = a >> 2;       /* 15 = 1111 */      System.out.println("a >> 2  = " + c );      c = a >>> 2;      /* 15 = 0000 1111 */      System.out.println("a >>> 2 = " + c );   }}
输出结果a & b = 12a | b = 61a ^ b = 49~a = -61a << 2 = 240a >> 15a >>> 15

总结:

&(按位和) 如果二进制AND运算符存在于两个操作数中,则二进制AND运算符将对结果复制一位。 (A和B)将给出12是0000 1100
| (按位或) 二进制OR运算符如果存在于任一操作数中,则复制一位。 (A | B)将给出61,其为0011 1101
^(按位异或) 二进制XOR操作符复制该位,如果它设置在一个操作数中,而不是两者。 (A ^ B)将给出49,其为0011 0001
(按位称赞) 二进制补码运算符是一元的,具有“翻转”位的作用。 (A)将给出-61,由于有符号的二进制数,它是2 0的补码形式的1100 0011。
<<(左移) 二进制左移操作符。左操作数值左移由右操作数指定的位数。 A << 2将给出240是1111 0000
>>(右移) 二进制右移操作符。左操作数值被右操作数指定的位移动。 A >> 2将给出15是1111
>>>(零填补右移) 右移零填充操作符。左操作数值右移由右操作数指定的位数,移位值用零填充。 A >>> 2将给出15是0000 1111