2009-06-23 8 views

答えて

101

はい、それはThe Java Language Specificationで定義されています。 Section 4.2: Primitive Types and Valuesから

整数型、値8ビット、 16ビット、32ビットおよび64ビット two's-を署名さbyteshortint、及びlong、あります 、およびの値 は、UTF-16コード単位(§3.1)を表す16ビットの符号なし整数 です。

Section 4.2.1: Integral Types and Valuesから

、さらに:

整数型の値が以下の範囲で 整数である:バイトについて

  • 、-128から127まで、
  • 包括的な要約すると、-32768から32767まで、
  • intの場合、-2147483648から2147483647まで-9223372036854775808から9223372036854775807に長いため
  • 、charの
  • 含め、 '\のU0000' からの '\ uffff' 0から65535
+1

優秀な情報:-) – joe

7

intに、すなわち、包括sは32でありますビット。もっと必要な場合は、longは64ビットです。

0

Java 8では、符号なし整数のサポートが追加されました。プリミティブintにはまだ署名がありますが、一部のメソッドでは符号なしと解釈されます。

  • compareUnsigned(int型のx、int型のY)
  • divideUnsigned(INT配当、INT除数)
  • parseUnsignedInt(文字列S)
  • 以下の方法は、Java 8にInteger classに添加しました

  • parseUnsignedInt(文字列S、INT基数)
  • remainderUnsigned(INT配当、INT除数)
  • toUnsignedLo NG(int型X)
  • toUnsignedString(INT i)を
  • toUnsignedString(INT I、INT基数)ここ

は使用例である:64ビット長の場合、補足として

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

あなたの要件を満たしていない場合は、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

関連する問題