ビット演算子
ビット演算子は、のためのシンボルである操作を行う上での各ビットバイナリ、それは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); } }
動作結果: