位元移位運算子
Java 運算式說明章節
位元位移運算子 Shift Operator
種類
int1 << int2 右移運算:左移後右邊位元補 0。
int1 >> int2 左移運算:右移後左邊位元補原最左位元值。
int1 >>> int2 左移運算:右移後左邊位元補 0。
Shift.java
public class Shift {
public static void main(String[] args) {
int i = 2;
System.out.println("i = " + i + " , 二進制為 00000000000000000000000000000010" );
System.out.println("i << 1 =>> " + (i << 1) );
System.out.println(" 00000000000000000000000000000010");
System.out.println(" << 0000000000000000000000000000010_");
System.out.println("=>> 00000000000000000000000000000100");
int j = 2;
System.out.println("j = " + j + " , 二進制為 00000000000000000000000000000010" );
System.out.println("j >> 1 =>> " + (j >> 1) );
System.out.println(" 00000000000000000000000000000010");
System.out.println(" >> _0000000000000000000000000000001");
System.out.println("=>> 00000000000000000000000000000001");
int k = 2;
System.out.println("k = " + k + " , 二進制為 00000000000000000000000000000010" );
System.out.println("k >>> 1 =>> " + (k >>> 1) );
System.out.println(" 00000000000000000000000000000010");
System.out.println(" >>> _0000000000000000000000000000001");
System.out.println("=>> 00000000000000000000000000000001");
j = -2;
System.out.println("j = " + j + " , 二進制為 11111111111111111111111111111110" );
System.out.println("j >> 1 =>> " + (j >> 1) );
System.out.println(" 11111111111111111111111111111110");
System.out.println(" >> _1111111111111111111111111111111");
System.out.println("=>> 11111111111111111111111111111111");
k = -2;
System.out.println("k = " + k + " , 二進制為 11111111111111111111111111111110" );
System.out.println("k >>> 1 =>> " + (k >>> 1) );
System.out.println(" 11111111111111111111111111111110");
System.out.println(" >>> _1111111111111111111111111111111");
System.out.println("=>> 01111111111111111111111111111111");
}
}
執行結果
i = 2 , 二進制為 00000000000000000000000000000010
i << 1 =>> 4
00000000000000000000000000000010
<< 0000000000000000000000000000010_
=>> 00000000000000000000000000000100
j = 2 , 二進制為 00000000000000000000000000000010
j >> 1 =>> 1
00000000000000000000000000000010
>> _0000000000000000000000000000001
=>> 00000000000000000000000000000001
k = 2 , 二進制為 00000000000000000000000000000010
k >>> 1 =>> 1
00000000000000000000000000000010
>>> _0000000000000000000000000000001
=>> 00000000000000000000000000000001
j = -2 , 二進制為 11111111111111111111111111111110
j >> 1 =>> -1
11111111111111111111111111111110
>> _1111111111111111111111111111111
=>> 11111111111111111111111111111111
k = -2 , 二進制為 11111111111111111111111111111110
k >>> 1 =>> 2147483647
11111111111111111111111111111110
>>> _1111111111111111111111111111111
=>> 01111111111111111111111111111111
備註:
在使用位移運算時,會先將左邊的運算元轉換成 int 型別,然後才會進行位移的運算。
【 M@nGo 留言區 】 如有任何建議的地方,請前往芒果留言區留言。
最后更新于