整数の最大値: C と Java の範囲の違いを理解する
C と Java はどちらも 32 ビット整数を使用しますが、その範囲は大きく異なります。この矛盾を理解するには、これらの言語の基本的なデータ型の表現を詳しく調べることが不可欠です。
C では、データ型の表現はマシンに依存します。整数型 (int) は通常、-32,768 ~ 32,767 の範囲の 32 ビットを含みます。この範囲は、符号付き 2 の補数表現から生じ、最上位ビット (MSB) が符号を示します。正の値の場合は MSB が 0 に設定され、負の値の場合は 1 に設定されます。一方、
Java は Java 言語仕様に準拠し、データ型の表現を定義します。 Java の整数型 (int) は一貫して 32 ビットであり、符号付き 2 の補数表現に準拠しています。ただし、その範囲は -2,147,483,648 から 2,147,483,647 までです。
Java の範囲が広い理由は、符号を表すために使用される追加ビットに起因すると考えられます。 C では、MSB は符号専用であり、値用の 31 ビットが残ります。 Java では、MSB も符号用に予約されていますが、大きさを表す追加ビットがあり、実質的に値に 31 ビット、符号に 1 ビットが提供されます。
その結果、Java の整数範囲は次のようになります。 C の整数範囲の 2 倍のサイズ。この違いは、大きな数値を扱う場合に顕著です。Java では、long や double などの大きなデータ型に頼ることなく、より広範囲の可能な値が提供されます。
以上が32 ビット整数を使用しているにもかかわらず、C と Java では整数の範囲が異なるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。