Beginnen wir mit der Zusammenfassung der primitiven Java-Datentypen:
Byte : Der Byte-Datentyp ist eine 8-Bit -Zweierkomplement-Ganzzahl mit Vorzeichen .
Kurz : Der kurze Datentyp ist eine 16-Bit -Zweierkomplement-Ganzzahl mit Vorzeichen .
int: Der Int-Datentyp ist eine 32-Bit -Zweierkomplement-Ganzzahl mit Vorzeichen .
long: Der Long-Datentyp ist eine 64-Bit-Ganzzahl mit zwei Vorzeichen .
float: Der Float-Datentyp ist ein 32-Bit-IEEE 754-Gleitkomma mit einfacher Genauigkeit .
double : double data type ist ein 64-Bit-IEEE 754-Gleitkomma mit doppelter Genauigkeit .
Boolescher Wert: Der boolesche Datentyp repräsentiert ein Informationsbit .
Der Datentyp char: char ist ein einzelnes 16-Bit-Unicode-Zeichen .
Quelle
Zwei ergänzen
"Das gute Beispiel aus dem Wiki ist, dass die Beziehung zum Zweierkomplement durch die Feststellung realisiert wird, dass 256 = 255 + 1 ist und (255 - x) das Einerkomplement von x ist
0000 0111 = 7 Zweierkomplement ist 1111 1001 = -7
Die Art und Weise, wie es funktioniert, ist, dass das MSB (das höchstwertige Bit) einen negativen Wert erhält, also im obigen Fall
-7 = 1001 = -8 + 0+ 0+ 1
Positive ganze Zahlen werden im Allgemeinen als einfache Binärzahlen gespeichert (1 ist 1, 10 ist 2, 11 ist 3 usw.).
Negative ganze Zahlen werden als Zweierkomplement ihres Absolutwerts gespeichert. Das Zweierkomplement einer positiven Zahl ist bei Verwendung dieser Notation eine negative Zahl.
Quelle
Da ich für diese Antwort einige Punkte erhalten habe, habe ich beschlossen, weitere Informationen hinzuzufügen.
Eine detailliertere Antwort:
Unter anderem gibt es vier Hauptansätze, um positive und negative Zahlen in Binärzahlen darzustellen, nämlich:
- Signierte Größe
- Komplement
- Zweierkomplement
- Vorspannen
1. Signierte Größe
Verwendet das höchstwertige Bit zur Darstellung des Vorzeichens, die verbleibenden Bits zur Darstellung des Absolutwerts. Wobei 0 eine positive Zahl und 1 eine negative Zahl darstellt , Beispiel:
1011 = -3
0011 = +3
Diese Darstellung ist einfacher. Sie können Binärzahlen jedoch nicht auf die gleiche Weise wie Dezimalzahlen hinzufügen, was die Implementierung auf Hardwareebene erschwert. Darüber hinaus verwendet dieser Ansatz zwei binäre Muster, um die Werte 0, 100 ... 0 und 0 ... 0 darzustellen.
2. Die Ergänzung
In dieser Darstellung invertieren wir alle Bits einer bestimmten Zahl, um ihre Komplementarität herauszufinden. Beispielsweise:
010 = 2, so -2 = 101 (inverting all bits).
Das Problem dieser Darstellung besteht darin, dass noch zwei Bitmuster existieren, um die 0 (00..0 und 11..1) darzustellen.
3. Zweierkomplement
Um das Negativ einer Zahl zu finden, invertieren wir in dieser Darstellung alle Bits und fügen dann ein Bit hinzu. Das Hinzufügen eines Bits löst das Problem, dass zwei Bitmuster 0 darstellen. In dieser Darstellung haben wir nur eines (00 ... 0).
Zum Beispiel wollen wir die binäre negative Darstellung von 4 (dezimal) mit 4 Bits finden. Zuerst konvertieren wir 4 in binär:
4 = 0100
dann invertieren wir alle Bits
0100 -> 1011
Zum Schluss fügen wir noch ein bisschen hinzu
1011 + 1 = 1100.
1100 entspricht also -4 in Dezimalzahl, wenn wir eine binäre Zwei-Komplement-Darstellung mit 4 Bits verwenden.
Ein schnellerer Weg, das Komplementäre zu finden, besteht darin, das erste Bit als Wert 1 zu fixieren und die verbleibenden Bits zu invertieren. Im obigen Beispiel wäre es ungefähr so:
0100 -> 1100
^^
||-(fixing this value)
|--(inverting this one)
Die Zweierkomplementdarstellung enthält nicht nur eine Darstellung für 0, sondern fügt auch zwei Binärwerte auf dieselbe Weise hinzu wie in dezimalen, geraden Zahlen mit unterschiedlichen Vorzeichen. Es ist jedoch notwendig, nach Überlauffällen zu suchen.
4. Bias
Diese Darstellung wird verwendet, um den Exponenten in der IEEE 754-Norm für Gleitkommazahlen darzustellen. Es hat den Vorteil, dass der Binärwert mit allen Bits auf Null den kleinsten Wert darstellt. Und der Binärwert mit allen Bits zu 1 repräsentiert den größten Wert. Wie der Name schon sagt, wird der Wert binär (positiv oder negativ) binär mit n Bits mit einer Vorspannung (normalerweise 2 ^ (n-1) oder 2 ^ (n-1) -1) codiert.
Wenn wir also 8 Bits verwenden, wird der Wert 1 in Dezimalzahl in Binärform unter Verwendung einer Vorspannung von 2 ^ (n-1) durch den Wert dargestellt:
+1 + bias = +1 + 2^(8-1) = 1 + 128 = 129
converting to binary
1000 0001