Liczba bitów użytych do reprezentacji wartości int to stała Integer.SIZE, która jest określana jako public static final int SIZE = 32;od wersji Java 1.5.
Integralne typy byte, short,
int, i long, których wartości są 8-bitowy, 16-bitowy, 32-bitowy i 64-bitową uzupełnienie do dwóch liczb całkowitych, odpowiednio, i char, których wartości są 16-bitowe liczby całkowite bez znaku reprezentujący kod UTF-16 jednostki (§ 3.1).
public static final int SIZE = 32;
od wersji Java 1.5.Odpowiedzi:
Tak, jest to zdefiniowane w specyfikacji języka Java .
Z punktu 4.2: Typy i wartości pierwotne :
Oraz dodatkowo z punktu 4.2.1: Typy i wartości całkowe :
źródło
int
s to 32 bity. Jeśli potrzebujesz więcej,long
s to 64 bity.źródło
Java 8 dodała obsługę liczb całkowitych bez znaku. Prymityw
int
jest nadal ze znakiem, jednak niektóre metody będą interpretować je jako bez znaku.Następujące metody zostały dodane do klasy Integer w Javie 8:
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 }
źródło
Dodatkowo, jeśli długość 64 bitów nie spełnia Twoich wymagań, wypróbuj java.math.BigInteger .
Nadaje się do sytuacji, w których liczba jest poza zakresem 64 bitów.
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); }
Wynik to:
Suma to: 18446744073709551614
Różnica to: -18446744073709551615
Produkt to: -85070591730234615856620279821087277056
Iloraz to: 1
źródło