Wie können negative und Kommazahlen im Dualsystem (=Binärsystem) dargestellt werden?
Allgemeines 21.967 Themen, 148.254 Beiträge
Hi!
Zusätzlich zur beschriebenen Methode (hier wird einfach das "höchste" Bit genutzt um eine negative Zahl anzuzeigen), aknn man auch einfach nur 7 Bits verwenden, das 8 wird dann auch zum Vorzeichenbit, aber die Zahlencodierung sieht etwas anders aus.
Im ersten Fall ist das ja so:
00001001 = +9
10001001 = -9
Das linke Bit (zählt nromalerweise 128) ist hier das Vorzeichenbit.
Ist es gesetzt, haben wir eine negative Zahl.
Nachteil: will man mit negativen Zahlen addieren oder subtrahieren, muss man das berücksichtigen. Der Code wird länger.
Man kann negative Zahlen auch so darstellen, indem man den positioven Wert von Null abzieht. dabei wird dann automatisch das Vorzeichenbit gesetzt.
Um also eine -9 zu erzeugen berechnet man 0-9:
00000000
-
00001001
=
11110111
Vorteil: man kann so kodierte negative Zahlen wie normale positive Zahlen addieren und subtrahieren, ohne dass man vorher das Vorzeichen auswerten muss.
Bei den Kommazahlen gibt's zwei Möglichkeiten: Fix-Komma und Fliess-Komma.
Am einfachsten ist Fix-Komma:
Hier sage ich z.B. die ersten vier Bits sind Vorkomma und die restlichen vier Bits sind Nachkomma.
Beispiele:
2,0 = 00100000
1,0 = 00010000
0,5 = 00001000
0,25= 00000100
Fliess-Komma ist komplizierter, man braucht mind. zwei bytes um eine Zahl zu kodieren. Eine Mantisse und einen Exponent.
In der Mantisse steht die eigentliche Zahl, allerdings ohne Komma (man muss den Wert entsprechend umrechnen). Der Exponent enthält quasi die Stelle, an der sich das Komma befindet.
Um letzteres zu verstehen, muss man wissen, wie die Mantisse berechnet wird:
Wir haben es mit dem Binärsystem zu tun. Eine Multiplikation mit 2 entspricht dem Svhieben der Bits um eine Stelle nach Links. Die Division durch 2 entspricht dem Verschieben nach Rechts.
Um die Mantisse zu berechnen multipliziert bzw. dividiert man die Kommazahl solange mit 2 bzw. durch 2, bis der errechnete Wert zwischen 1 und 0,5 liegt. Wie oft multipliziert bzw, dividiert wird, zählt man und das ist dann der Wert, der im Exponenten gespeichert wird.
Ok, Beispiel:
2,5
1mal durch 2:
1,25
nochmal durch 2:
0,625
Ergebnis: Mantisse ist 0,625 und der Exponent ist -2
Noch'n Beispiel:
0,004
Der Wert wird 7mal mit 2 Multipliziert, dann kommt man auf: 0,512
Mantisse ist 0,512 und der Exponent ist +7.
Ich hoffe, ich bin halbwegs verständlich rübergekommen (und hab' nicht zuviele Fehler eingebaut)... ;-)
Bis denn
Andreas