1.ビットシフト演算子
- <<: 左にシフトします。
- >>: 右にシフトします。
- >>>: 符号なし右シフト (ゼロ埋め込みあり)。
2.シフト演算子の一般的な構文
値 << num-bits: 値を左にビットシフトします。
値>>; num-bits: 符号ビットを維持したまま、値のビットを右にシフトします。
値 >>> num-bits: 値を右にビットシフトし、左側にゼロを挿入します。
3.左にシフト
- 左にシフトするたびに、値のすべてのビットが 1 つ左にシフトされます。
- 右側にビット 0 が挿入されます。
- 効果: 変位ごとに値を 2 で乗算します。
4.右にシフト
- 右にシフトするたびに、すべてのビットが 1 つ右に移動します。
- 符号ビットは保持されます。正の値の場合は 0、負の値の場合は 1 です。
- 効果: シフトごとに値を 2 で割ります (切り捨て)。
5.右にシフト 信号なし (>>>)
- 符号ビットの保存はありません。左側に 0 を挿入します。
- 値が符号なしの数値として扱われるビット パターンで使用されます。
6.変位は回転ではありません
- シフトアウトされたビットは失われます。
- シフトでは、シフトアウトされたビットを回復できません。
例:
左右シフト
*シフトデモ *
バイト値と short 値をシフトするときの注意
- Java は、式を評価するときに byte と short を int に自動的に昇格させます。
例:
- 負のバイト値を右にシフト: int に昇格すると、上位ビットは 1 で埋められます。
- ゼロ パディング (>>>) を使用して右にシフトすると、ゼロが表示され始める前に上位 24 ビットが 1 になるため、問題が発生する可能性があります。
ビット演算子による省略された代入
- すべての 2 項ビット演算子には、代入とビット演算を組み合わせた短縮形式があります。
例
x = x ^ 127;
x ^= 127;
ログイン後にコピー
以上がシフト演算子とビット単位の短縮代入の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。