Wird Javas int
immer und überall eine 32-Bit-Ganzzahl mit Vorzeichen?Ist ein Java Int immer 32 Bit?
Antwort
Ja, es ist in The Java Language Specification definiert.
Von Section 4.2: Primitive Types and Values:
Die integralen Typen sind
byte
,short
,int
undlong
, deren Werte sind 8-Bit, 16-Bit- , 32-Bit- und 64-Bit-signierte two's- Komplement-Ganzzahlen, bzw.char
, deren Werte vorzeichenlose 16-Bit-Ganzzahlen sind, die UTF-16-Code-Einheiten darstellen (§3.1).
Und zusätzlich von Section 4.2.1: Integral Types and Values:
Die Werte der ganzzahligen Typen sind ganze Zahlen in den folgenden Bereichen:
- Für Byte, von -128 bis 127, inklusive
- Kurz gesagt, von -32768 bis 32767, einschließlich
- Für int, von -2147483648 bis 2147483647, inklusive
- für lange, bis von -9223372036854775808 9223372036854775807, inclusive
- Für char, von '\ u0000' to '\ uffff' inklusive, das heißt, von 0 bis 65535
int
s sind 32 Bits. Sollten Sie mehr benötigen, sind long
s 64 Bit.
Java 8 hat einige Unterstützung für vorzeichenlose Ganzzahlen hinzugefügt. Das primitive int
ist immer noch signiert, einige Methoden interpretieren sie jedoch als vorzeichenlos.
Die folgenden Verfahren wurden zum Integer class in Java 8 hinzugefügt:
- compareUnsigned (int x, int y)
- divideUnsigned (int Dividend, int Divisor)
- parseUnsignedInt (String s)
- parseUnsignedInt (String s, int radix)
- remainderUnsigned (int Dividend, int Divisor)
- toUnsignedLo ng (int x)
- toUnsignedString (int i)
- toUnsignedString (int i, int radix)
Hier ist ein Beispiel Nutzung:
public static void main(String[] args) {
int uint = Integer.parseUnsignedInt("4294967295");
System.out.println(uint); // -1
System.out.println(Integer.toUnsignedString(uint)); // 4294967295
}
Als Zusatz, wenn 64 Bits lang erfüllt nicht Ihre Anforderung, versuchen Sie java.math.BigInteger.
Es ist für die Situation geeignet, dass die Zahl außerhalb des Bereichs von 64 Bit lang ist.
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);
}
Der Ausgang ist:
Die Summe wird: 18446744073709551614
Der Unterschied ist: -18446744073709551615
Das Produkt ist: -85070591730234615856620279821087277056
der Quotient: 1
- 1. Wie konvertiert man vorzeichenbehafteten 32-Bit-Int in unsigned 32-Bit-Int?
- 2. Java-32-Bit-64-Bit-Kompatibilität
- 3. Java: 32-Bit-fp-Implementierung von Math.sqrt()
- 4. Vektor von 64-Bit doppelt schneller zu Skalarprodukt als ein Vektor von 32-Bit unsigned int?
- 5. running 32 & 64-bit Java-Code
- 6. Einzel 32-Bit-MSI mit 32/64-Bit-Treiber
- 7. Kompilieren 32 Bit von Win7 64 Bit
- 8. R H2O mit 32-Bit-Java
- 9. java jni verwenden 32-Bit-Binärdateien auf 64-Bit-System
- 10. 64-Bit-Java-App zur Verwendung von 32-Bit-DLL
- 11. Konvertiere 12 Bit int in 16 oder 32 Bits
- 12. Eine 32-Bit-Gleitkommazahl einer 32-Bit-Ganzzahl zuordnen
- 13. Subversion mit 32 Bit Server und 32/64 Bit Clients
- 14. Flywaydb 32 Bit Version
- 15. WASP PowerShell 32 Bit
- 16. Nunit debugs in 64-Bit, Anwendung ist in 32-Bit
- 17. Ist iPhone OS 64 Bit oder 32 Bit?
- 18. 64-Bit-Assembly Anweisungen von 32 Bit
- 19. C# 32-Bit-App 64-Bit-Registrierung
- 20. Office 64 Bit & IE 32 Bit & VBScript
- 21. 32 bit Java wird nicht auf meinem x64-Desktop installiert
- 22. Funktioniert WdlResamplingSampleProvider mit 32 Bit?
- 23. Ermitteln, ob das iOS-Gerät 32- oder 64-Bit ist
- 24. 16-Bit-Hexadezimalzeichenfolge int int in Java signiert
- 25. 32-Bit-DLL in Office 64 Bit
- 26. Ermitteln JRE-Architektur 32-Bit-vs 64-Bit
- 27. Implizite Typumwandlung in C (Konvertieren von 32 Bit ohne Vorzeichen in 8 Bit u int)
- 28. Wie konvertiert man ein 8-Bit OpenCV IplImage * in ein 32-Bit IplImage *?
- 29. #ifdef für 32-Bit-Plattform
- 30. Generischen Int in Code verwenden - 32 oder 64 Bit Int in Core Data iOS verwenden?
Ausgezeichnete Info :-) – joe