Java シフト演算子は、> (符号なし右シフト) の 3 つです。
1. 左シフト演算子
左シフト演算子 1) その一般的な形式は次のとおりです:
value num は、value 値をシフトするビット数を指定します。
左シフトのルールについて 1 つだけ覚えておいてください。それは、最上位ビットを破棄し、最下位ビットを 0 で埋めることです。
移動されたビット数がその型の最大ビット数を超える場合、コンパイラーはその型の数の剰余を取得します。ビットが移動しました。たとえば、int 型を 33 ビット移動した場合、実際には 332=1 ビットだけが移動します。
2) 演算ルール
すべての数値をバイナリ形式で対応する桁数だけ左に移動し、上位ビットをシフトアウト(破棄)し、下位ビットの空のビットをゼロで埋めます。
左シフトのオペランドが int 型の場合、1 ビット移動するたびに、その 31 番目のビットがシフトアウトされて破棄されます。
左シフトのオペランドが Long 型の場合、1 ビット移動するたびに、その 63 番目のビットは削除されて破棄されます。
左シフトオペランドがbyte型、short型の場合、これらの型は自動的にint型に展開されます。
3) 数学的意味
数値がオーバーフローしないことを前提とすると、正の数値と負の数値の場合、位置を 1 つ左にシフトすることは 2 の 1 乗を乗算することと等価であり、n ビット左にシフトすることは2のn乗に相当します
4) 計算プロセス:
例: 3 1) 3を2進数に変換します 0000 0000 0000 0000 0000 0000 0000 0011,
2) 数値の上位ビット (左側) を変換し、他のすべての数値を 2 ビット左にシフトします。
3) 下位ビットの 2 つの空の位置を 0 で埋めます (右側)。 )。得られる最終結果は 0000 0000 0000 0000 0000 0000 0000 1100 で、10 進数に変換すると 12 になります。
上位ビット(31ビットまたは63ビット)にシフトされると、値は負になります。次のプログラムはこれを示しています。
public class MultByTwo {
public static void main(String args[]) {
int i;
int num = 0xFFFFFFE; (i=0; i num = num System.out.println(num);
}
}
}
このプログラムの出力は次のとおりです。
1073741816
2147483632-32
注: n ビットのバイナリ、最上位ビットは符号ビットであるため、表現される数値範囲は -2^(n-1) ——2^(n-1) -1 となります。 、したがって、法は 2^(n-1) です。
右シフト演算子 1) その一般的な形式は次のとおりです:
value >> num
num は、value 値をシフトするビット数を指定します。
右シフト規則について 1 つだけ覚えておいてください: 符号ビットは変更されず、符号ビットは左に追加されます
2) 演算規則:
バイナリ形式のすべての数値を対応する桁数だけ右に移動します。下位ビット (破棄) と上位ビットをシフトアウトします。空のビットは符号ビットで埋められます。つまり、正の数は 0 で埋められ、負の数は 1 で埋められます。右シフトのオペランドが byte および short の場合型の場合、これらの型は自動的に int 型に展開されます。
演算を実行するときに負の数の符号を維持するために使用されます。
1 ビット右にシフトすることは 2 で割ることと等価であり、n ビット右にシフトすることは 2 の n 乗で割ることと等価です。
4) 計算プロセス
11 >>2 (11はint型)
1) 11の2進数形式は、 0000 0000 0000 0000 0000 0000 0000 1011です
3) 最終結果は 0000 0000 0000 0000 0000 0000 0000 0010 です。
10進数に変換すると3になります。
35 >> 2 (35はint型)
35をバイナリに変換: 0000 0000 0000 0000 0000 0000 0010 0011
下位ビットの下2桁を繰り出す: 0000 0000 0000 0000 00 00 0000 0000 1000
5) 右シフトする場合、符号は保持されません
右シフト後の値は 0x0f とビット単位の AND 演算され、符号ビットの拡張が破棄され、取得された値は次の添字として使用できます。定義された配列。このようにして、対応する配列要素によって表される 16 進文字が取得されます。
例:
public static public void main(String args[]) {
char hex[] = {
'0', '1', '2', '3', '4', ' 5 '、'6'、'7'、
'8'、'9'、'a'、'b'、'c'、'd'、'e'、'f'
};
バイト b = (バイト) 0xf1;
System.out.println("b = 0x" hex[(b >> 4) & 0x0f] hex[b & 0x0f]);}}
(b >> ; 4) & 0x0f の演算プロセス:
b の 2 進形式: 1111 0001
4 桁の数値をシフトアウト: 0000 1111
b & 0x0f の演算プロセス:
b の 2 進形式は: 1111 0001
0x0f の 2 進形式は: 0000 1111
ビットごとの AND 演算: 0000 0001
10 進形式に変換: 1
そこで、このプログラムは出力は次のとおりです:
b = 0xf1
3. 符号なし右シフト演算子>>>
その一般的な形式は次のとおりです:
value >>> の数を指定します。値をシフトするビット。
符号なし右シフトのルールについて 1 つだけ覚えておいてください: 符号ビット拡張を無視し、最上位ビットを 0 で埋めてください
符号なし右シフト演算子>>> は 32 ビット値と 64 ビット値に対してのみ意味を持ちます。
Java シフト演算子の詳細な説明と関連記事については、PHP 中国語 Web サイトに注目してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ドリームウィーバー CS6
ビジュアル Web 開発ツール
