Unsigned long in Java
Derzeit bin ich mit signed Werten von -2^63 bis 2^63-1. Jetzt muss ich die gleiche Strecke (2 * 2^64), aber mit positiven Werten nur. Ich fand die java-Dokumentationen zu erwähnen, unsigned long, die für diesen Einsatz.
Habe ich versucht zu erklären, 2^64, eine Lange wrapper-Objekt, aber noch immer verliert die Daten, in anderen Worten, es werden nur erfasst, bis die Long.MAX_VALUE
, so bin ich eindeutig etwas fehlt.
Ist BigInteger
die signierte long, der Java unterstützt?
Gibt es eine definition oder Zeiger, wie deklarieren und verwenden Sie es?
BigInteger ist der Weg zu gehen.
Java unterstützt nur signierte Long. Zeitraum. Aber auch eine, wenn es so etwas wie eine unsigned long, 2^64 ist zu groß, um es in passen.
Es gibt keine unsigned long, aber je nach der situation, die Sie bekommen kann Weg mit die Behandlung eine lange als unsigned.
Es gibt unsigned long
Möglich diese Frage:stackoverflow.com/questions/508630/...
Java unterstützt nur signierte Long. Zeitraum. Aber auch eine, wenn es so etwas wie eine unsigned long, 2^64 ist zu groß, um es in passen.
Es gibt keine unsigned long, aber je nach der situation, die Sie bekommen kann Weg mit die Behandlung eine lange als unsigned.
Es gibt unsigned long
Möglich diese Frage:stackoverflow.com/questions/508630/...
InformationsquelleAutor SpreeTheGr8 | 2017-06-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Java keine unsigned long Typ, aber Sie können Behandlung von signierten 64-bit-zweier-Komplement-Ganzzahlen (d.h.
long
) als vorzeichenlose wenn Sie vorsichtig über Sie.Viele primitive integer-Operationen sind "Zeichen Agnostiker"; z.B. kann man mit Java primitive addition, Subtraktion und Multiplikation, und Holen Sie sich die "richtige" Antwort für eine vorzeichenlose Zahl dargestellt
long
.Für weitere Operationen wie division und Vergleich der
Long
Klasse stellt die Methode wiedivideUnsigned
undcompareUnsigned
zu geben, der die richtigen Ergebnisse für zahlen ohne Vorzeichen dargestellt alslong
Werte.(Diese Vorgänge wurden Hinzugefügt, die in Java 8. Davor, Sie könnte verwendet 3rd-party-Bibliotheken, z.B. statische Methoden in
com.google.common.primitiven.UnsignedLongs
.)UnsignedLong
Klasse.InformationsquelleAutor Stephen C
In Java 8,
unsigned long
Unterstützung eingeführt wurde. Noch sind diese typischen longs, aber die Zeichen nicht beeinflussen, addieren und subtrahieren. Für das teilen und zu vergleichen, sind dedizierte Methoden inLong
. Sie können auch Folgendes tun:BigInteger
ist ein bisschen anders. Es kann halten Sie sehr große zahlen. Es speichert Sie alsint[]
und unterstützt Arithmetik.Long.parseUnsignedLong
gibt lange, nicht Lange.InformationsquelleAutor xenteros
Wenn Sie mit einem Drittanbieter-Bibliothek ist eine option, es ist jOOU (ein spin-off-Bibliothek von jOOQ), die den wrapper-Typen für vorzeichenlose ganze zahlen in Java. Das ist nicht genau das gleiche, wie mit primitiven Typs (und damit der byte-code) Unterstützung für vorzeichenlose Typen, aber vielleicht ist es noch gut genug für Ihren Anwendungsfall.
Alle diese Arten erweitern
java.lang.Number
- und umgebaut werden kann, höher -, um primitive Typen undBigInteger
. In Ihrem Fall ist, werden frühere Versionen von jOOU einfach gespeichert unsigned long-Wert in einenBigInteger
. Version 0.9.3 hat einige Coole bit-Verschiebung passen Sie den Wert in einer gewöhnlichenlong
.(Disclaimer: ich arbeite für die Firma, die hinter diesen Bibliotheken)
InformationsquelleAutor Lukas Eder