ホームページ >Java >&#&チュートリアル >Java のビット演算子とシフト演算の詳細な紹介

Java のビット演算子とシフト演算の詳細な紹介

高洛峰
高洛峰オリジナル
2016-12-16 16:59:011778ブラウズ

1. ビット演算

Java には 4 つのビット演算があります。その演算規則は次のとおりです:

(1) ビットごとの AND (&): 2 つのビットが両方とも 1、それ以外の場合は 0。

( 2) ビット単位の OR (|): 2 つのビットのいずれかが 1 の場合、結果は 1 になり、それ以外の場合は 0 になります。

(3) ビット単位の否定 (~): 0 は 1 になり、1 は 0 になります。

(4 ) ビットごとの XOR (^): 2 つのビット、それらが同じ場合、結果は 0、異なる場合、結果は 1 です。

注:

(1) 符号ビット (最上位ビット)

(2) ビット演算子は、論理演算子 (論理 AND &&、論理 OR ||、論理 NOT!) に似ています。ただし、論理演算子はブール変数

に対してのみ演算できます (つまり、左側と右側の値はブール値です)

(1) ~5 = ?

a) 5 の補数 コードは次のとおりです:

00000000 00000000 00000000 00000101


b) 5 のビット単位の否定 (~) は次のとおりです:

11111111 11111111 11111111 1010

注: 上位桁が 1 (負の数) であるため、補数は元のコードに変換する必要があります。上位桁が 0 (正の数) の場合は、元のコード、補数コード、および正の数の補数コードが変換されるため、補数コードを元のコードに変換する必要はありません。同じだ。

c) 負の数の補数を補数に変換します:

11111111 11111111 11111001


d) 負の数の補数を元のコードに変換します:

10000000 00000000 0 000 00000110

e)元のコードは 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 進補数を使用して演算を実行するため、避けてください。


Java のビット演算子とシフト演算の詳細については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。