Java移位運算符的內容:
左移位運算符(<<)、有符號右移位運算符(>>)、無符號右移位運算符(>>>)。
移位運算符的操作對象:
移位運算符操作的對象就是二進制的位,可以單獨用移位運算符來處理int型整數。
移位運算符詳解:
(1)左移位運算符(<<):將運算符左邊的對象向左移動運算符右邊指定的位數(在低位補0);
public class test{
public static void main(String[] args) {
int num1 = 2,num2 = 2,num3;
num3 = num1 << num2;
System.out.println("a 移位的結果是" + num3); //輸出結果:8
}
}
注:左移n位,相當於給原數乘以2的n次方。
(2)有符號右移位運算符(>>):將運算符左邊的對象向右移動運算符右邊指定的位數。使用符號擴展機制(最高位的符號位一直存在,運算後,如果是正數,在高位補0,如果是負數,則在高位補1),當且僅當,值爲正;
public class test{
public static void main(String[] args) {
int num1 = 16;
int num2 = -16;
int num3 = 2;
int num4 = 2;
System.out.println("num1 的移位結果:"+(num1 >> num3)); //輸出結果:4
System.out.println("num2 的移位結果:"+(num2 >> num4)); //輸出結果:-4
}
}
注:右移n位,相當於給原數除以2的n次方,正負號不變。
(3)無符號右移位運算符(>>>):將運算符左邊的對象向右移動運算符右邊指定的位數。採用0擴展機制(符號位也參與運算,運算後,補0),也就是說,無論值的正負。
public class test{
public static void main(String[] args) {
int num1 = 16;
int num2 = -16;
int num3 = 2;
System.out.println(num1 >>> num3); //輸出結果:4
System.out.println(num2 >>> num3); //輸出結果:1073741820
}
}
注:負數的符號位參與運算。