Ich möchte 4294967295
einer Variablen zuweisen ( 2^32-1
)
Es ist offensichtlich, dass ich das mit Integer
nicht machen kann, und ich kann es mit Long
machen.
Allerdings habe ich festgestellt, dass Java 8 unsignierte Ganzzahlen (zumindest einige Methoden) anbietet.
Weiß jemand, was die Methode Integer.parseUnsignedInt()
macht?
Wenn ich "4294967295"
dazu gebe und die Variable drucke, gibt es die Ausgabe als -1
( -2
für 4294967294
, -3
für 4294967293
und so weiter ...)
Gibt es eine Möglichkeit, dass ich 4294967295
in einer Variablen noch haben kann?
Fehle ich hier etwas?
%Vor% Dies gibt die Ausgabe als -1
, aber ich erwartete 4294967295
.
Soweit ich Ссылка verstehe, wird die nicht signierte Unterstützung von nicht erledigt Einführung eines neuen Typs. Die Werte werden weiterhin in (vorzeichenbehafteten) int-Variablen gespeichert, aber sie stellen Methoden zur Interpretation des Werts als unsigned bereit:
Um den Overhead von Boxed-Werten zu vermeiden und die Wiederverwendung der integrierten arithmetischen Operatoren zu ermöglichen, führt die unsignierte API-Unterstützung keine neuen Typen wie UnsignedInt mit Instanzmethoden zur Addition, Subtraktion usw. ein von separaten unsignierten Typen auf Java-Ebene bedeutet, dass ein Programmierer versehentlich vorzeichenbehaftete und nicht signierte Werte mischen kann.
Sie haben die "unsigned" Version von Parse verwendet, aber Sie zeigen nicht an, welche Methode Sie verwenden, um die Variable zu drucken. Wahrscheinlich hast du das (voreingestellte) Zeichen gewählt.