2009-06-23 9 views

Odpowiedz

101

Tak, jest zdefiniowany w The Java Language Specification.

Z Section 4.2: Primitive Types and Values:

Integralne typy byte, short, int i long, których wartości są 8-bitowe 16-bitowe, 32-bitowe lub 64-bitową liczbą ze znakiem two's- dopełnienie liczb całkowitych, odpowiednio i char, których wartości są 16-bitowymi liczbami całkowitymi bez znaku reprezentującymi jednostki kodowe UTF-16 (§3.1).

A dodatkowo z Section 4.2.1: Integral Types and Values:

Wartości integralną typy są całkowitymi w następujących zakresach:

  • Dla bajt, od -128 do 127 włącznie
  • W skrócie, od -32768 do 32767, w tym
  • dla int, od -2147483648 do 2147483647, włącznie
  • Długo z -9223372036854775808 do 9223372036854775807 włącznie
  • char z '\ u0000' do '\ uFFFF' włącznie, to jest od 0 do 65535
+1

Doskonała informacja :-) – joe

7

int S są 32 bity. Jeśli potrzebujesz więcej, long s to 64 bity.

0

Java 8 dodała obsługę liczb całkowitych bez znaku. Pierwotny int jest nadal podpisany, jednak niektóre metody będą interpretować je jako niepodpisane.

następujące metody dodano do Integer class Java 8:

  • compareUnsigned (Int x int y)
  • divideUnsigned (Int dywidendy Int dzielnik)
  • parseUnsignedInt (łańcuch s)
  • parseUnsignedInt (łańcuch s, Int radix)
  • remainderUnsigned (Int dzielna, Int dzielnik)
  • toUnsignedLo ng (int x)
  • toUnsignedString (int i)
  • toUnsignedString (int i int radix)

Oto przykład użycia:

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

jako uzupełnienie, jeżeli długość 64 bitów nie spełnia Twoich wymagań, spróbuj java.math.BigInteger.

Jest odpowiedni dla sytuacji, w której liczba przekracza zakres 64-bitowy.

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); 

} 

wyjście jest:

suma wynosi: +18446744073709551614

Różnica: -18446744073709551615

Produkt: -85070591730234615856620279821087277056

Iloraz 1

Powiązane problemy