Java の不可解な整数からバイトへの変換: 符号なし値を理解する
開発者は Java のプリミティブ型を扱う際に、興味深い問題に頻繁に遭遇します。整数 (int) をバイト (byte) に変換するときの動作。以下のコード スニペットに示されているように、正の整数をバイトにキャストすると、予期せず、一見誤った負の値が返されます。
この単純なコードの出力が、予想される 132 ではなく -124 になるのはなぜですか?この謎を解明するために、Java のプリミティブ型の複雑さと、符号付き値と符号なし値の内部表現を詳しく調べます。
Java の符号付き型と符号なし型を理解する
Java の int、byte、short、long などのプリミティブ型は符号付きです。つまり、正の値と負の値の両方を表すことができます。これらの型は 2 の補数表記を利用し、最上位ビット (MSB) が数値の符号を決定します。 MSB が 0 の場合、数値は正です。
ビット単位 AND
の役割 混乱を解決し、バイトの真の符号なし値を明らかにするために、ビット単位の演算を使用します。具体的には、ビットごとの AND 演算子 (「&」) を、通常は 0xff で表されるビットマスクとともに利用します。ビットマスクは、整数の下位 8 ビットのみが保持されるようにし、符号ビットを効果的に削除します。
上位ビットをマスクすることで、バイトの元の符号なし値を分離し、それが元の符号なしの値であることを明らかにします。確かに正の値 (この場合は 255) です。
変換の影響
Java が int をバイトに変換するとき、左端の 24 ビットが切り捨てられます。下位8ビットのみ。これらの残りのビットの解釈は、符号ビットの存在によって異なります。符号ビットが 1 (負) の場合、Java は値が負であるとみなし、残りの 7 ビットを反転します。ただし、符号ビットが 0 (正) の場合、残りのビットは符号なしの値として読み取られます。
結論
Java のプリミティブ型の符号付きの性質を理解することでビットマスクの役割を理解することで、int をバイトに変換するときに観察される一見奇妙な動作をわかりやすく説明できます。この知識により、開発者はデータを正確に操作および解釈できるようになり、Java コードが意図したとおりに実行されるようになります。
以上がJava の int から byte への変換で予期しない負の値が生成されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

javaachievesplatformentenceTheTheTheJavavirtualMachine(JVM)、CodetorunondifferentoperatingSystemswithOutModification.thejvmcompilesjavacodeplatform-IndopentedbyTecodeを承認することを許可します

javaispowerfulfulduetoitsplatformindepentence、object-orientednature、richstandardlibrary、performancecapability、andstrongsecurityfeatures.1)platformendependenceallowseplicationStorunonaydevicesupportingjava.2)オブジェクト指向のプログラマン型

上位のJava関数には、次のものが含まれます。1)オブジェクト指向プログラミング、サポートポリ型、コードの柔軟性と保守性の向上。 2)例外処理メカニズム、トライキャッチ式ブロックによるコードの堅牢性の向上。 3)ゴミ収集、メモリ管理の簡素化。 4)ジェネリック、タイプの安全性の向上。 5)コードをより簡潔で表現力豊かにするためのAMBDAの表現と機能的なプログラミング。 6)最適化されたデータ構造とアルゴリズムを提供するリッチ標準ライブラリ。

javaisnotentirelylylyplatformedent dueTojvmvariations andNativeCodeIntegration、ButlargelyHoldSitsworapromise.1)JavacompilestobyteCoderunbythejvm、Cross-Platformexecution.2を許可します

thejavavirtualmachine(jvm)isanabstractcomputingmachineculucialforjavaexecutionsiTrunsjavabytecode、「writeonce、runaynay "capability

JavaremainsagoodlanguagedueToitscontinuousevolution androbustecosystem.1)lambdaexpressionsenhancecodereadability andenableFunctionalprogramming.2)streamsalowsolowsolfisitydataprocessing、特に特にlagedatasets.3)硬化系系統系系統系系統系系統

Javaisgreatduetoitsplatformindependence、robustoopsupport、extensiveLibraries、andstrongCommunity.1)PlatformentepenteviajvMallowsCodeTorunonVariousPlatforms.2)oopeatureSlikeEncapsulation、遺伝、およびポリモ系系統型皮下皮質皮下Rich

Javaの5つの主要な特徴は、多型、Lambda Expressions、StreamSapi、ジェネリック、例外処理です。 1。多型により、さまざまなクラスのオブジェクトを一般的なベースクラスのオブジェクトとして使用できます。 2。Lambda式は、コードをより簡潔にし、特にコレクションやストリームの処理に適しています。 3.ストリームサピは、大規模なデータセットを効率的に処理し、宣言操作をサポートします。 4.ジェネリックは、タイプの安全性と再利用性を提供し、型刻印中にタイプエラーがキャッチされます。 5.例外処理は、エラーをエレガントに処理し、信頼できるソフトウェアを作成するのに役立ちます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

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