Das CodefragmentArbeiten mit Werten von ganzen Zahlen und ihre maxes
int x = < an integer value >; System.out.println(x*x);
Displays
-131071
. Welcher der folgenden Werte ist ein möglicher Wert vonx
?
Offenbar ist die Antwort 2^16 - 1
.
Ich weiß nicht einmal, wie das eine Antwortwahl war. Wie soll ich dieses Problem ohne einen Rechner lösen?
Die Aussage
System.out.println(Integer.MAX_VALUE);
druckt
2147483647
, die2^31 - 1
gleich ist. Wie wird die folgende Anweisung gedruckt?System.out.println(Integer.MAX_VALUE + 2);
Die Antwort war -2137483546
. Ich bin verwirrt wie, sollte es nicht eine arithmetische Ausnahme verursachen, da wir außerhalb der Grenzen sind?
Ich stelle diese Fragen nicht für Sie, um sie für mich zu tun? Könnten Sie mir die Argumentation geben und nicht nur die Antworten (die ich bereits habe)? Ich bin nur verwirrt über die Manipulation mit ints
in der Nähe ihrer maximalen Werte.
Kennen Sie [Zweierkomplement] (https://en.wikipedia.org/wiki/Two%27s_complement)? –
Ist das Komplement nicht der Minimalwert? @OliverCharlesworth – Asker123
@OusmaneMahyDiaw Ich versuche nicht für eine Ausnahme. Das ist eine Frage, die ich beantworten muss. Ich kann die Frage nicht manipulieren. – Asker123