首页 > 代码库 > JAVA 按位运算符的解释

JAVA 按位运算符的解释

按位运算符

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 = 12
a | b = 61
a ^ b = 49
~a = -61
a << 2 = 240
a >> 15
a >>> 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


本文出自 “逐梦路上的Man” 博客,请务必保留此出处http://meyangyang.blog.51cto.com/12906086/1926831

JAVA 按位运算符的解释