Java intは常に32ビットですか?


82

Javaはintいつでもどこでも32ビットの符号付き整数になりますか?


int値を表すために使用されるビット数は、Java1.5public static final int SIZE = 32;以降として指定されている定数Integer.SIZEです。
burnabyRails

回答:


122

はい、Java言語仕様で定義されています

セクション4.2から:プリミティブ型と値

一体タイプはbyteshortint、およびlong、その値は8ビット、16ビット、32ビットおよび64ビットの符号付き2の補数の整数であり、それぞれ、そしてchar、その値がUTF-16コードを表す16ビットの符号なし整数でありますユニット(§3.1)。

さらにセクション4.2.1から:整数型と値

整数型の値は、次の範囲の整数です。

  • バイトの場合、-128から127まで
  • 要するに、-32768から32767まで
  • intの場合、-2147483648から2147483647まで
  • 長い間、-9223372036854775808から9223372036854775807まで
  • charの場合、「\ u0000」から「\ uffff」まで、つまり0から65535まで

8

intsは32ビットです。さらに必要な場合、longsは64ビットです。


6

Java 8では、符号なし整数のサポートが追加されています。プリミティブintは引き続き符号付きですが、一部のメソッドはそれらを符号なしとして解釈します。

以下のメソッドがIntegerクラスに追加されましたに。

  • compareUnsigned(int x、int y)
  • splitUnsigned(int被除数、int除数)
  • parseUnsignedInt(String s)
  • parseUnsignedInt(String s、int radix)
  • 残差符号なし(int被除数、int除数)
  • toUnsignedLong(int x)
  • toUnsignedString(int i)
  • toUnsignedString(int i、int radix)

使用例は次のとおりです。

public static void main(String[] args) {
    int uint = Integer.parseUnsignedInt("4294967295");
    System.out.println(uint); // -1
    System.out.println(Integer.toUnsignedString(uint)); // 4294967295
}

3

補足として、64ビット長が要件を満たさない場合は、java.math.BigIntegerを試してください。

数値が64ビット長の範囲を超えている状況に適しています。

public static void main(String args[]){
    
    String max_long = "9223372036854775807";
    String min_long = "-9223372036854775808";
    
    BigInteger b1 = new BigInteger(max_long);
    BigInteger b2 = new BigInteger(min_long);
    
    BigInteger sum = b1.add(b1);
    BigInteger difference = b2.subtract(b1);
    BigInteger product = b1.multiply(b2);
    BigInteger quotient = b1.divide(b1);
    
    System.out.println("The sum is: " + sum);
    System.out.println("The difference is: " + difference);
    System.out.println("The product is: " + product);
    System.out.println("The quotient is: " + quotient);
    
}

出力は次のとおりです。

合計は:18446744073709551614

違いは次のとおりです:-18446744073709551615

製品は:-85070591730234615856620279821087277056

商は次のとおりです:1

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.