Allgemeines 22.006 Themen, 148.988 Beiträge

Negative und Komma- Zahlen im Dualsystem ?

getit / 2 Antworten / Baumansicht Nickles

Wie können negative und Kommazahlen im Dualsystem (=Binärsystem) dargestellt werden?

bei Antwort benachrichtigen
Bembel getit „Negative und Komma- Zahlen im Dualsystem ?“
Optionen

Das ist definitionssache. standardmäßig definiert man für ein Byte die Zahlen 0 bis 255 (So klappts auch am besten mit dem umrechnen.
Man kann natürlich auch die Zahlen von -127 bis 128 definieren. Oder man läßt sich durch ein bestimmtes Bit das Vorzeichen ausgeben ...

Schönen Gruß

Aufgrund von epileptischen Anfällen, die beim Betrachten dieser Signatur bei manchen Lesern auftraten, musste diese Signatur leider entfernt werden.
bei Antwort benachrichtigen
Andreas42 getit „Negative und Komma- Zahlen im Dualsystem ?“
Optionen

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

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen