Kommazahl im Dualsytem

Neue Frage »

lloyd banks Auf diesen Beitrag antworten »
Kommazahl im Dualsytem
moin!

also ich wollte mal ne frage zum dualsystem stellen. wir haben die aufgabe ein paar zahlen darin zu berechnen. das geht auch ganz gut, allerdings habe ich jetzt die schwierigkeit eine kommazahl darzustellen. also sagen wir mal 0,5. das ist ja 2^-1. aber dann ich nun einfach 01 schreibe reicht das ja nicht aus. der computer muss ja noch von irgendwoher wisse, welcher basis die ^1 haben soll. also man würde ja normalerweise denken, dass (10) mit basis 2 = 2 mit basis 10 ist. ich hoffe das problem kann man verstehen..

würde mich über nen tip oder nen link freuen.
thx dieter
klarsoweit Auf diesen Beitrag antworten »
RE: Kommazahl im Dualsytem
so richtig habe ich das Problem nicht verstanden.
0,5 im Dualsystem ist 0,1.
lloyd banks Auf diesen Beitrag antworten »

ja hast recht.. ich will das ganze ja im 32 bit system im computer darstellen... und da kann ich dann ja nicht einfach ein komma einbauen. also muss ja irgendwo sowas stehen wie bei einer negativen/positiven zahl die das 32ste bit 1 bzw 0
AD Auf diesen Beitrag antworten »

Zitat:
Original von lloyd banks
und da kann ich dann ja nicht einfach ein komma einbauen.


Das kannst du schon, nur muss das Programm, was mit diesen Zahlen operiert, über die Position der Kommastelle informiert sein. Das ganze nennt man, glaube ich, Festkommazahlen - im Unterschied zu den meist üblichen Gleitkommazahlen (float, double in "C/C++").
sonja1893 Auf diesen Beitrag antworten »

Eine Möglichkeit zur Dualdarstellung von Zahlen im Gleitpunktformat ist die folgende: Es wird eine bestimmte Zahl von Bits für jede der Größen Vorzeichen, Charakteristik und Betrag der Mantisse reserviert. Bei einem Speicherplatz von 32 Bit so:
Vz: 1 Bit
Mantisse: 23 Bit
Charakteristik: 8 Bit

Das weitere Vorgehen:
1. Man wandelt den Vorkommateil ins Dualsystem um. Das ist in deinem Fall recht einfach: 0 ist und bleibt nun mal 0.
2. Man wandelt den Nachkommateil ins Dualsystem um: 0.5 x 2 = 1.0
Würde hier nun z.B. 1.2 rauskommen, müsste man weiterrechnen mit 0.2 x 2 usw. Hier haben wir aber Glück und wir können schon mit dem nächsten Schritt weitermachen.
3. 0.5 im Dezimalsystem ist also im Dualsystem (die 1 kommt von obigem 1.0). Da wir aber hier für die Mantisse 23 Bit haben, machen wir das Ganze etwas länger: wir fügen vor der 1 bei 0.1 noch 22 mal 0 ein, so dass wir die Mantissenlänge von 23 Bit erreichen. Ergebnis: 0.00000000000000000000001
4. Jetzt wird die Charakteristik berechnet: Ch = K + Exponent
K ist eine Konstante. In deinem Fall ist K = 127. Der Exponent ist 22 (wegen der eingefügten Nullen). Also ist Ch = 149. Umgerechnet ins Dualsystem: 10010101
Somit ist das Ergebnis:
Vz: 0
Mantisse: 00000000000000000000001
Charakteristik: 10010101
insgesamt: 32 Bit

Probe:

-23 steht hier, weil die 1 in der Mantisse an 23. Stelle kommt und 22 steht dort wegen dem Exponenten.

Ich hoffe, du konntest mir folgen. Augenzwinkern
lloyd banks Auf diesen Beitrag antworten »

hey danke! genau so eine erklärung habe ich gebraucht. vielen dank!

mfg dieter
 
 
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »