Integer min-und max-Werte
Ich bin ein Neuling in der Programmierung. Ich studierte aus ein Java-Objekt Buch über Programmierung und Durchführung der Anleitungen und Beispiele auf der Buch gleichzeitig auf dem computer.
In dem Buch heißt es, dass der maximale und der minimale Wert von Ganzzahlen sind;
Integer.MAX_VALUE = 2147483647
Integer.MIN_VALUE = -2147483648
So OK. hier gibt es kein problem aber;
es sagt, dass, wenn wir hinzufügen 1 auf den maximalen Wert und subtrahieren Sie 1 vom minimum;
class test {
public static void main(String[] args) {
int min = Integer.MIN_VALUE -1;
int max = Integer.MAX_VALUE +1;
int a = min - 1;
int b = max + 1;
System.out.println("min - 1 =" + a);
System.out.println("max - 1 =" + b);
}
}
so finden wir;
min - 1 = 2147483646
max + 1 = -2147483647
und es sagt, dass dieses Ergebnis liegt daran, dass der binäre Prozess im Speicher, die nur mit 32 bit.
Die Sache, die ich nicht verstehen konnte. In dem Stück code nicht, es addieren und subtrahieren 2 jeweils aus maximum-und minimum-Werte?;
int min = Integer.MIN_VALUE -1; //subtracted 1 here
int max = Integer.MAX_VALUE +1; //added 1 here
int a = min - 1; //subtracted 1 here
int b = max + 1; //added 1 here
- Ja, es tut addieren und subtrahieren
2
. Sie haben jede Ausgabe die Ausgabe verstehen? - also das Buch ist dann falsch. er sagt, wenn wir subtrahieren Sie 1 vom minimum es muss -2147483469 aber es wurde 2147483646, cuz, dass binäre Zeug. also der Satz "Abzug 1" ist falsch im Buch
- Ich verstehe nicht, die Frage, noch der Punkt, der zwischen
min
undmax
Variablen. - Matt. Die Frage ist klar. ich könnte Antworten Sie besser wenn ich nicht bin ein Anfänger, so ist der Punkt zu verstehen, primitive Datentypen, wie in dem Buch geschrieben lol. ich wollte nicht schreiben, dass Beispiel
- 1) Es gibt keine Notwendigkeit, fügen Sie den wichtigsten tag in den Titel. 2) Bitte fügen Sie einen Großbuchstaben am Anfang der Sätze. Auch ein Kapital für das Wort, das ich, und Abkürzungen und Akronyme wie JEE oder KRIEG. Dies macht es einfacher für Menschen zu verstehen und Ihnen zu helfen. 3) Verwenden Sie eine einheitliche und logische Einzug für code-Blöcke. Der Einzug der Kodex soll helfen, Menschen zu verstehen, die Programm fließen.
- Andrew, ich lese die posting-Regeln vor, und iam wirklich Leid. es ist, weil mein impatiance beim erlernen neuer Dinge. es wird nicht wieder passieren
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beachten Sie, dass
a
istInteger.MAX_VALUE - 1
undb
istInteger.MIN_VALUE + 1
. Also ja, es ist in der Tat subtrahieren und addieren 1 zweimal in jedem Fall. Das Buch ist nicht falsch, aber es ist eine dumme Art und Weise der Lehre über die wrap-around-überlauf. DruckInteger.MIN_VALUE - 1
undInteger.MAX_VALUE + 1
hätte den Punkt getroffen.Aus der Java Language Specification, §15.18.2:
Die JLS ist die höchste Autorität, wenn es um Fragen wie diese, aber ich weiß nicht empfehlen, es zu Lesen als Weg zum lernen von Java. Sie wären besser dran, wenn man durch die Java Language Tutorial. Es ist ziemlich umfangreich, der Inhalt ist sehr hochwertig.