ホームページ >Java >&#&チュートリアル >Java のビット演算子とシフト演算の詳細な紹介
1. ビット演算
Java には 4 つのビット演算があります。その演算規則は次のとおりです:
(1) ビットごとの AND (&): 2 つのビットが両方とも 1、それ以外の場合は 0。
( 2) ビット単位の OR (|): 2 つのビットのいずれかが 1 の場合、結果は 1 になり、それ以外の場合は 0 になります。 (3) ビット単位の否定 (~): 0 は 1 になり、1 は 0 になります。(4 ) ビットごとの XOR (^): 2 つのビット、それらが同じ場合、結果は 0、異なる場合、結果は 1 です。
注:
(2) ビット演算子は、論理演算子 (論理 AND &&、論理 OR ||、論理 NOT!) に似ています。ただし、論理演算子はブール変数 に対してのみ演算できます (つまり、左側と右側の値はブール値です)
(1) ~5 = ?
a) 5 の補数 コードは次のとおりです:
b) 5 のビット単位の否定 (~) は次のとおりです:
11111111 11111111 11111111 1010
注: 上位桁が 1 (負の数) であるため、補数は元のコードに変換する必要があります。上位桁が 0 (正の数) の場合は、元のコード、補数コード、および正の数の補数コードが変換されるため、補数コードを元のコードに変換する必要はありません。同じだ。 c) 負の数の補数を補数に変換します: 11111111 11111111 11111001e)元のコードは 2 進数に変換されます:
10000000 00000000 00000000 00000110 = 0 * 2^0 + 1 * 2^1 + 1 * 2^2 = 0+2+4 = -6 (最上位ビットは 1) 、つまり負の数です)
3. シフト演算:
Java には 3 つのシフト演算子があります。
(1) 算術右シフト (>>): 下位ビットはオーバーフローし、符号ビットは変更されず、オーバーフローした上位ビットは符号ビットで埋められます。例: a >> : a は移動する数値、b は移動する桁数、以下にも同じことが当てはまります
(2) 算術左シフト (
(3) 論理右シフト (>> ;>): 下位ビットはオーバーフローし、上位ビットは 0 で埋められます。論理右シフト (>>>) もそれに応じて変化します;
IV. 注:
ビット演算とシフト ビット演算はすべて 2 進補数を使用して演算を実行するため、避けてください。