So geben Sie den absoluten Wert einer vorzeichenlosen Ganzzahl in Java aus [duplizieren]

8

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 .

    
Pubudu Dodangoda 15.10.2014, 11:07
quelle

3 Antworten

17

Sie können diese Ganzzahl als unsigned int anzeigen, indem Sie toUnsignedString() :

aufrufen %Vor%

Sie können auch einige andere Methoden aufrufen, die diesen int als unsigned interpretieren.

Zum Beispiel:

%Vor%     
Eran 15.10.2014, 11:12
quelle
2

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.

    
chiccodoro 15.10.2014 11:13
quelle
0
  

Gibt es eine Möglichkeit, dass ich noch 4294967295 in einer Varible haben kann?

Ja. Verwende long . (Für mich hört es sich so an, als würden Sie es überdenken.)

    
NPE 15.10.2014 11:13
quelle

Tags und Links