Java SE(25)演算子-ビット演算子

ビット演算子

ビット演算子は、のためのシンボルである操作を行う上での各ビットバイナリ、それは0と1に新しい操作のために特別です。

オペレーター 計算 結果

      ビット単位および

 (1対1の両方)

0&0 0
0&1 0
1&0 0
1&1 1
|

      ビット単位または

   (1は1)

0 | 0 0
0 | 1 1
1 | 0 1
1 | 1 1
^

     ビット単位のXOR

  (違いは1です)

0 ^ 0 0
0 ^ 1 1
1 ^ 0 1
1 ^ 1 0
ネゲート 〜0 1
〜1 0
<< 左にシフト (正数)0000 0010<<2 0000 10 00
(負の数)1 001 0011 << 2 0100 11 00
>> 右シフト 0 110 0010 >> 2 00 01 1000
1110 0010 >> 2 11 11 1000
>>> 符号なし右シフト 0110 0010 >>> 2 00 01 1000
11 ... 1110 0010 >>> 2 00 11 ... 11 1000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

目次

ビット演算子

ビット演算子&

ビット演算子|

ビット演算子^

ビット演算子〜

ビット演算子<<

ビット演算子>>-符号付き右シフト

ビット演算子>>>-符号なし右シフト


ビット演算子&

ビット演算子&関与する2つの2進数のAND演算である操作で両方のバイナリビットが1である場合、ビット演算の結果がそれ以外の場合は0であり、1です。

例 :     

ビット演算子|

ビット演算子&は、演算に関係する2つの2進数に対してOR演算を実行します。2進数の1つが値1の場合、ビットの結果は1になり、それ以外の場合は0になります。

例:

ビット演算子^

ビット演算子^は、演算に関係する2つの2進数に対してXOR演算を実行します。2進数が同じ場合、値は0、それ以外の場合は1です。

例:

ビット演算子〜

ビット演算子〜は1つのオペランドでのみ動作します。バイナリビットが0の場合、逆値は1です。バイナリビットが1の場合、逆値は0です。

例:

ビット演算子<<

ビット演算子<<は、オペランドのすべてのバイナリビットを1ビット左に移動します。動作中、右側のスペースは0埋められ左側の部分は破棄されます。

例:

面接の質問: 4x8-4 << 3へ最速の方法。

ビット演算子>>-符号付き右シフト

ビット演算子>>は、オペランドのすべてのバイナリビットを1ビット右に移動します。動作中、スロットの左側が元の1または補数0の符号ビットに依存している場合(元の値が負の場合1正の数になり、0補います)。

例:

ビット演算子>>>-符号なし右シフト

ビット演算子>>>は、オペランドのすべてのバイナリビットを1ビット右に移動します。動作中、左側のスペースは0埋められます(元の数値の正と負の数値は考慮されません)。

例:

public class FuShu {
	public static void main(String[] args) {
		System.out.println(Integer.toBinaryString(-6));
		
		int m=-6;
		m=m>>>2;
		System.out.println(Integer.toBinaryString(m));
		System.out.println(m);
	}
}

動作結果:

 

 

 

おすすめ

転載: blog.csdn.net/wqh101121/article/details/112601948