Java 按位運算符

2018-02-20 02:19 更新

Java教程 - Java按位運算符


按位操作符作用于其操作數的各個位。Java按位運算符可以應用于整數types: long,int,short,char,byte 。

按位運算符列表

下表列出了所有Java按位運算符。

運算符 結果
~ 按位一元NOT
& 按位AND
| 按位或
^ 按位異或
>> 向右移動
>>> 右移零填充
<< 向左移動
&= 按位AND分配
|= 按位OR分配
^= 按位異OR分配
>>= 右移賦值
>>>=右移零填充分配
<<= 向左移位

按位運算符分配將賦值與按位運算組合。以下兩個語句是等效的:

a = a >> 4; 
a >>= 4;  

以下兩個語句是等效的:

a = a | b; 
a |= b;

以下程序演示了按位運算符分配:

 
public class Main {
  public static void main(String args[]) {
    int a = 1;
    int b = 2;
    int c = 3;
    a |= 2;
    b >>= 2;
    c <<= 2;
    a ^= c;
    System.out.println("a = " + a);
    System.out.println("b = " + b);
    System.out.println("c = " + c);

  }
}

此程序的輸出如下所示:


Java左移運算符

左移位算子,<<移位所有位中的一個值到左邊一個指定的數字的時間。

它有這種一般形式:

value << num

以下代碼移位字節(jié)類型變量。

 
public class Main {
  public static void main(String args[]) {
    byte a = 64, b;
    int i;
    i = a << 2;
    b = (byte) (a << 2);
    System.out.println("Original value of a: " + a);
    System.out.println("i and b: " + i + " " + b);
  }
}

此程序生成的輸出如下所示:


例子

每個左移具有使原始值加倍的效果。以下程序說明了這一點:

 
public class Main {
  public static void main(String args[]) {
    int num = 0xFFFFFFF;

    for (int i = 0; i < 4; i++) {
      num = num << 1;
      System.out.println(num);

    }
  }
}

程序生成以下輸出:

Java右移運算符

右移位運算符>> 將值中的所有位向右移a指定次數。

其一般形式如下所示:

value >> num

num 指定要向右移位的位置數。

以下代碼段將值 32 向右移兩個位置:

 public class Main {
  public static void main(String[] argv) {

    int a = 32;
    a = a >> 2;
    System.out.println("a is " + a);

  }
}

輸出:

Java無符號右移

Java無符號,右移運算符,>>> ,始終將零轉移到高階位。

其一般形式如下所示:

value >>> num

num 指定要向右移位的位置數。

以下代碼顯示如何使用無符號右移。

public class Main {
  public static void main(String[] argv) {
    int a = -1;
    a = a >>> 24;

    System.out.println("a is " + a);
  }
}

輸出:

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號