2 Stimmen

Wie speichert Java +-Infinite im Speicher?

Wenn alle 32 Bits für die Speicherung von -2^31 bis 2^31 benötigt werden, wie können dann + und - unendlich gespeichert werden? Benötigt es mehr Speicher? Ist es gut und sicher, diese Werte zu speichern?

UPDATE: Dank der Antworten weiß ich jetzt, dass nur Fließkommadatentypen Inf-Werte speichern können, Integer nicht.

8voto

Jeremy Punkte 1

Java, wie auch die meisten anderen Programmiersprachen, folgt der IEEE 754 Spezifikation für Gleitkommazahlen . Der Bereich der möglichen Werte ist leicht reduziert, um Folgendes zu berücksichtigen die Unendlichkeiten sowie NaN (Keine Nummer) . Diese sind sicher zu speichern; sie sind sogar als Konstanten verfügbar, zum Beispiel Double.POSITIVE_INFINITY .

Wenn alle 32 Byte benötigt werden, um von -2^31 bis 2^31 zu speichern

Ich glaube, Sie meinen 32 Bits , um alle möglichen ganzzahligen Werte in diesem Bereich zu speichern. Der Integer-Typ von Java funktioniert so, wie Sie es beschreiben, und hat keine Möglichkeit, Unendlichkeiten oder andere spezielle Werte zu speichern.

6voto

T.J. Crowder Punkte 948310

Wenn es alle 32 Byte Bits zu speichern von -2^31 bis 2^31...

Sie sprechen hier von Integer s .

...wie kann es + und - unendlich speichern?

Sie sprechen hier von Float y Double die unterschiedliche Datentypen sind. Float ist eine 32-Bit-IEEE-754-Zahl, und Double ist eine 64-Bit-IEEE-754-Zahl. IEEE 754 Gleitkommazahlen haben spezielle Werte für positive und negative Unendlichkeit.

Es gibt keinen speziellen "Unendlich"-Wert in Javas Integer Klasse können Sie die gesamte Bandbreite an Werten speichern.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X