ビット演算子紹介(二):Javaビット演算子

6592 ワード

Java言語には7つのビット操作演算子があります.これらの演算子は、long、int、short、char、byteを含む整数オペランドにのみ使用できます.ここで、JavaはC/C++に対してビット演算子">>>>"が1つ増え、整数オペランドもbyteタイプ(C/C++にはbyteタイプ整数がない)が1つ増え、オペランドにはunsignedタイプ整数がないことに注意してください.
    次はJavaビット操作演算子のリストです.演算子の優先度は上から下へ減少しますが、<,>>>>の優先度は同じです.
Javaビット演算子
オペレータ
機能
使用法
~
位求反
~expr
<<
左に移動
expr1 << expr2
>>
記号付きで右に移動し、左に空いているビットを元の一番左の0または1で埋めます.
expr1 >> expr2
>>>
符号なしで右に移動、すなわち左に空いているビットを0で埋めます.
expr1 >>>expr2
&
ビットと
expr1 & expr2
^
位異或
expr1 ^ expr2
|
ビットまたは
expr1 | expr2
    コードの例は次のとおりです.
 

  
    
1 public class BitOperation {
2 public static void main(String[] args) {
3 int x = 3 ,y = 5 ,z =- 5 ;
4 System.out.println( " ~z= " + ( ~ z));
5 System.out.println( " x&y= " + (x & y));
6 System.out.println( " x^y= " + (x ^ y));
7 System.out.println( " x|y= " + (x | y));
8 System.out.println( " z<<1= " + (z << 1 ));
9 System.out.println( " z>>1= " + (z >> 1 ));
10 System.out.println( " z>>>1= " + (z >>> 1 ));
11 }
12 }

 
    実行結果は次のとおりです.
~z=4
x&y=1
x^y=6
x|y=7
z<<1=-10
z>>1=-3
z>>>1=2147483645
    最初の4つの結果については、説明を省略し、私のブログ「ビット演算子(一):C/C++ビット演算子」を参照してください.次の3つの結果について、私の説明は以下の通りです.
    z=-5であり、符号化は(11111111111 11111111 11111111 11111011)
         11111111 11111111 11111111 11111011 <<1
      = 11111111 11111111 11111111 11110110
         11111111 11111111 11111111 11111011 >>1
      = 11111111 11111111 11111111 11111101
         11111111 11111111 11111111 11111011 >>>1
      = 01111111 11111111 11111111 11111101