Frage

Der Java-Datentyp Byte zum Beispiel hält Daten von -128 bis 127 in einem einzigen Byte bei der Lagerung. So aktivieren Sie zwischen distingush - 1 bis -128 0-127 würde erfordern, zusätzliche Daten, die den Datentyp obver seiner zugewiesenen Speicher nehmen würde. Zwar wäre es nur ein zusätzliches Bit nehmen, aber es geht noch über.

Wie funktioniert das Java tun?

War es hilfreich?

Lösung

Zwei-Komplement :

  

Die primitiven Typen das gleiche auf allen Rechnern und in allen Implementierungen sein werden definiert und sind in verschiedenen Größen Zweierkomplement-Zahlen, Single- und Double-Precision-Standard IEEE 754 Gleitkommazahlen, einem boolean-Typ und ein Unicode-Zeichen char-Typ. - Die Java Language Specification: Einführung

Sie können es als eine ganze Zahl von 0 bis 255 vorstellen, von denen 128 immer subtrahiert wird.

Mehr technisch: eine ganze Zahl kann (und wird) (positive → negativ oder vice versa) negiert werden, indem seine Bits invertieren und eine Zugabe. Dies ist fast wie Einerkomplement ( das einfach alle invertiert Bits daher ergänzt aber Einerkomplement hat das Problem, dass es zwei verschiedene Nullen hat. +0 und -0 (Gleitkommazahlen haben das auch, aber aus anderen Gründen und nützlicher ☺) zwei-Komplement diese löst. durch eine Zugabe und damit den Bereich der negativen Werten erstreckt (das ist, warum es -128 .. 127).

In gewisser Weise , man könnte sagen, dass das Zeichen in der Tat ist „gespeichert“ in dem ersten Bit der Zahl. So Ihre Beobachtung, dass es ein wenig Speicherbedarf ist richtig. Aber der Zahlenbereich eines byte (positiv oder negativ, das Zeichen ignoriert wird) benötigt nur 7 Bits, so dass Sie einen Byte wieder.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top