整数の最大値 質問する

整数の最大値 質問する

C では、整数 (32 ビット マシンの場合) は 32 ビットで、範囲は -32,768 から +32,767 です。Java では、整数 (long) も 32 ビットですが、範囲は -2,147,483,648 から +2,147,483,647 です。

ビット数は同じなのに、Java では範囲が異なる理由がわかりません。誰か説明してもらえますか?

ベストアンサー1

Cでは、言語自体が特定のデータ型の表現を決定しません。マシンごとに異なる場合があり、組み込みシステムではint16 ビット幅になることもありますが、通常は 32 ビットです。

唯一の要件は、サイズshort intが <= int<=であることです。また、プロセッサのネイティブ容量を表すlong int推奨事項もあります。int

すべての型は符号付きです。unsigned修飾子を使用すると、最上位ビットを値の一部として使用できます (そうでない場合は、符号ビット用に予約されます)。

以下に、可能なデータ型の可能な値の短い表を示します。

          width                     minimum                         maximum
signed    8 bit                        -128                            +127
signed   16 bit                     -32 768                         +32 767
signed   32 bit              -2 147 483 648                  +2 147 483 647
signed   64 bit  -9 223 372 036 854 775 808      +9 223 372 036 854 775 807
unsigned  8 bit                           0                            +255
unsigned 16 bit                           0                         +65 535
unsigned 32 bit                           0                  +4 294 967 295
unsigned 64 bit                           0     +18 446 744 073 709 551 615

ジャワJava言語仕様データ型の表現を決定します。

順序は、byte8 ビット、short16 ビット、int32 ビット、long64 ビットです。これらの型はすべて符号付きで、符号なしバージョンはありません。ただし、ビット操作では、数値は符号なしとして扱われます (つまり、すべてのビットが正しく処理されます)。

文字データ型はchar16ビット幅、符号なしcharであり、UTF-16エンコードを使用して文字を保持します(ただし、無効な文字コードポイントを表す任意の符号なし16ビット整数を割り当てることは可能です)

          width                     minimum                         maximum

SIGNED
byte:     8 bit                        -128                            +127
short:   16 bit                     -32 768                         +32 767
int:     32 bit              -2 147 483 648                  +2 147 483 647
long:    64 bit  -9 223 372 036 854 775 808      +9 223 372 036 854 775 807

UNSIGNED
char     16 bit                           0                         +65 535

おすすめ記事