整数値を表すために 32 ビットを使用しているにもかかわらず、Java の整数値の範囲は C の整数値の範囲とは大きく異なります。この矛盾は、それぞれの整数型が定義および実装される特定の方法に起因します。 language.
C 整数表現
C では、整数型の表現は基礎となるシステムまたはコンパイラの実装に任されます。通常、32 ビット マシンでは、整数型 (int) が 32 ビットを占有します。ただし、表現できる値の範囲は、符号付きか符号なしかによって異なります。C の
符号付き整数 は、符号を示すために最上位ビット (左端のビット) を使用します。値の。 32 ビットの符号付き整数は、-2,147,483,648 から 2,147,483,647 までの値を表すことができます。
符号なし整数 は、符号に最上位ビットを使用しないため、より広範囲の正の整数を表すことができます。 0 から 0 までの値4,294,967,295.
Java 整数表現
C とは異なり、Java には整数型を表現するための厳密な規則があります。すべての整数型 (byte、short、int、long) はデフォルトで署名され、各型に関連付けられた特定の幅:
各型が取り得る値の範囲表現は幅によって決まります。署名:
署名:
符号なし:
範囲が異なる理由
C と Java の整数表現における根本的な違いは、C では次のことが可能であるという事実に由来しています。より柔軟なアプローチを実現します。特定の実装の詳細はシステムまたはコンパイラに委ねられ、最適化やさまざまなアーキテクチャへの対応の自由度が高まります。
ただし、Java は、さまざまなプラットフォーム間での一貫性と移植性を維持することを目指しています。整数型に特定の表現を義務付けることで、ある環境用に書かれたコードが他のすべての Java 環境でも予測どおりに動作することが保証されます。
以上が32 ビットを使用しているにもかかわらず、Java の整数範囲が C の整数範囲と異なるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。