Wie ist 0x80000000 gleichgesetzt -2147483648 in java?
Unter den binäre der 0x80000000
bekommen wir
1000 0000 0000 0000 0000 0000 0000 0000
Wie funktioniert dies entspricht -2147483648
. Ich habe diese Frage mit diesem Programm.
class a
{
public static void main(String[] args)
{
int a = 0x80000000;
System.out.printf("%x %d\n",a,a);
}
}
meow@VikkyHacks:~/Arena/java$ java a
80000000 -2147483648
BEARBEITEN ich gelernt, dass das 2-Komplement verwendet wird zum darstellen von negativen zahlen. Wenn ich versuche gleichzusetzen, dies mit dem 1-Komplement wäre
1's Comp. :: 0111 1111 1111 1111 1111 1111 1111 1111
2's Comp. :: 1000 0000 0000 0000 0000 0000 0000 0000
was auch wieder keinen Sinn, Wie funktioniert 0x80000000
gleichzusetzen -2147483648
- Wie hast du
0x80000000
aus-2147483648
in den ersten Platz? - Danke, muss ich Bearbeiten meine Frage!!!!
- Sie haben bereits Ihre Frage beantwortet in deiner Frage nur vor dem Bearbeiten. Blick aus dem 2er-Komplement.
- Für 'a' als eine Ganzzahl, die Ausgabe sieht korrekt. Die max positive ganze Zahl ist 2147383647: oder 0x7FFFFFFF. Wenn Sie fügen Sie 1, um das maximum, es läuft von einem unterzeichneten eine Perspektive und gibt -2147483648.
- Nein, ich brauche, um klar und mit dieser auf den ersten Platz !!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, was passiert mit Ganzzahl-überlauf, im Grunde.
Es ist einfacher zu nehmen
byte
als ein Beispiel. Einbyte
Wert immer im Bereich von -128 bis 127 (inklusive). Also, wenn Sie einen Wert von127
(was 0x7f) wenn Sie fügen Sie 1, erhalten Sie -128. Das ist auch das, was Sie erhalten, wenn Sie die cast-128 (0x80) zubyte
:Overflow (bei 2er Komplement Ganzzahl-Darstellungen) geht immer von der höchsten Zahl ausdrückbar zu den niedrigsten ein.
Für unsigned Typen, der höchste Wert überläufe auf 0 (das ist erneut die niedrigste Zahl ausdrückbar). Dies ist härter, um zu zeigen, in Java, die nur unsigned-Typ ist
char
:Dies ist der Fall, wenn es zu einem überlauf, mit Bezug auf die Auswahl eines Datentyps.
Hier ist ein Beispiel, das ich teilen kann.