Dualzahl

Hallo,

nehmen wir an wir sollen die Dezimahlzahl 204 als Dualzahl darstellen.

Mit dem folgenden Algorithmus kommt man ans Ziel:

204 : 2 = 102 Rest 0
102 : 2 = 51 Rest 0
51 : 2 = 25 Rest 1
25 : 2 = 12 Rest 1
12 : 2 = 6 Rest 0
6 : 2 = 3 Rest 0
3 : 2 = 1 Rest 1
1 : 2 = 0 Rest 1

Die Spalte Rest vn unten gelesen ergibt dann die Dualzahl 11 00 11 00.
Das entspricht 1*2^7+1*2^6+0*2^5+0*2^4+1*2^3+1*2^2+0*2^1+0*2^0 = 204.

Ich weiß dass es funktioniert aber ich verstehe nicht warum. Wie kommt man auf solch eine Vorgehensweise? Speziell den Zahlen hinter dem Istgleich-Symbol (also 102,51,25,12,6,3,1,0) kann ich keine Bedeutung zumessen.

Hat jemand einen Erklärungsansatz?

Mit freundlichen Grüßen

Max

Hy max!

Was willst du gnau wissen, hast ja schon alles beschrieben was man wissen sollte!

Den zahlen 102,51… brauchst du auch keine Bedeutung zuzumessen. Sie sind lediglich Zwischenschritte wenn man vom Dezimalsystem aufs Dualsystem rechnet.

Denn umgekehrten Weg hast du auch schon beschrieben.

1*2^7 + 1*2^6 + 0*2^5 + 0*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 0*2^0
128 + 64 + 0 + 0 + 8 + 4 + 0 + 0 = 204

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Moin,

mache doch mal das Verfahren, um eine Dezimalzahl in eine Dezimalzahl umzuformen. Ja klar, da kommt die Zahl selbst wieder raus, aber Du siehst vielleicht, auf was es hinausläuft.
Also: Die Dezimalzahl 753 soll Deinen Algorithmus durchlaufen:

753 : 10 = 75 Rest 3
75 : 10 = 7 Rest 5
7 : 10 = 0 Rest 7

Und schon steht in der letzten Spalte die 753 wieder da.
Die 75, die 7 und die 0 sind eben Zwischenergebnisse, die beim Zerlegen der Zahl so entstehen.

Olaf

Hallo Max,

man kann bei der Zerlegung von Zahlen in Dualzahlen auch etwas anders starten, und zwar von den Zweierpotenzen
2^0=1, 2^1=2, 2^2=4, 2^3=8, 2^4=16 u.s.w.
Wenn wir bei deinem Beispiel mit der Zahl 204 bleiben, dann würde das so aussehen:

2^7 … 2^6…2^5 …2^4 …2^3…2^2…2^1…2^0
128 … 64 … 32 … 16 … 8 … 4 … 2 … 1 …
… ? … ? … ? … ? … ? … ? … ? … ?

204 /128 => das geht 1 mal, 204-128 = 76, also

128 … 64 … 32 … 16 … 8 … 4 … 2 … 1 …
… 1 … ? … ? … ? … ? … ? … ? … ?

76 / 64 => geht 1 mal, 76-64 =12, also

128 … 64 … 32 … 16 … 8 … 4 … 2 … 1 …
… 1 … 1 … ? … ? … ? … ? … ? … ?

12 / 32 geht nicht, ebenso 12 / 16, deswegen

128 … 64 … 32 … 16 … 8 … 4 … 2 … 1 …
… 1 … 1 … 0 … 0 … ? … ? … ? … ?

8 geht wieder, Rest ist 4, dann geht wieder 4, Rest ist 0, deswegen
128 … 64 … 32 … 16 … 8 … 4 … 2 … 1 …
… 1 … 1 … 0 … 0 … 1 … 1 … 0 … 0

Damit sind wir bei deiner 1*2^7+1*2^6+0*2^5+0*2^4+1*2^3+1*2^2+0*2^1+0*2^0 = 204.

Jetzt stell dir vor du teilst die Zeile durch 2:
1*2^7+1*2^6+0*2^5+0*2^4+1*2^3+1*2^2+0*2^1+0*2^0 = 204 | /2
1*2^6+1*2^5+0*2^4+0*2^3+1*2^2+1*2^1+0*2^0+ 0*1/2 = 102

Merkst du was?
Die binäre Zerlegung für 204 ist
128 … 64 … 32 … 16 … 8 … 4 … 2 … 1 …
… 1 … 1 … 0 … 0 … 1 … 1 … 0 … 0

und die für 102 ist
128 … 64 … 32 … 16 … 8 … 4 … 2 … 1 …
… … 1 … 1 … 0 … 0 … 1 … 1 … 0 …(0)

Die Division durch zwei bedeutet einen Shift der binären Zahl nach rechts. Das, was dann auf der rechten Seite wegfällt, ist der Rest. Bei Division durch zwei hat man ja immer entweder Rest 0 oder 1.

Damit sind wir dann bei deinen Zahlen auf der rechten Seite hinter dem Istgleich-Symbol, denn 1100110 = 64+32+4+2=102.

Das kann man dann wiederholen, wieder Division durch zwei, d.h. rechtsshift, Rest ist 0, und die Zahl, die übrig bleibt, ist:
128 … 64 … 32 … 16 … 8 … 4 … 2 … 1 …
… … … 1 … 1 … 0 … 0 … 1 … 1 … (0) …(0)
und damit deine 51.

Der Rest ist also immer die binäre Ziffer, die beim rechtsshift rausfällt.
Und so bekommt man sukzessive auch mit der „durch zwei teilen“-Methode die Ziffern der binären Zahl raus.

Ich hoffe ich habe deine Frage damit einigermaßen beantworten können :smile:

Viele Grüße,
Simone

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo.

Ich weiß dass es funktioniert aber ich verstehe nicht warum.
Hat jemand einen Erklärungsansatz?

Du siehst ja in der Umkehrung der Rechnung, dass Du beim fortlaufenden Teilen die Reihe der Zweierpotenzen durchläufst. Das ist eine Eigenschaft des Stellenwertsystems. Unser Dezimalsystem funktioniert ja auch so: 4711 = 4x10^3 + 7x10^2 + 1x10^1 + 1x10^0.

Die Zwischenwerte, die Du bekommst, haben für sich betrachtet keine Bedeutung (ungefähr so, als wenn Du schriftlich dividierst - da interessiert Dich auch nicht, dass

174:11=15,8...
11
--
 64
 55
 --
 90
 88
 --
 20

da unterwegs die 64, die 90 und die 20 auftauchen).

Man kann eine Dezimalzahl auch auflösen, indem man sich die jeweiligen Zweierpotenzen einzeln rauspickt. Bei der 204 in Deinem Beispiel haben wir schon mal die 128 und die 64, sind zwei Einsen. 204-128-64=12. Die 32 und die 16 haben wir also nicht: zwei Nullen. In der Zwölf steckt die 8 drin und die Vier: zwei Einsen. Bleibt Null übrig, also noch zwei Nullen für die letzten beiden Stellen. 11001100 ist also das Ergebnis. Unterwegs hast Du wieder Zwischenergebnisse:

204-128=76
 76 - 64=12
 12 - 8= 4
 4 - 4= 0

, wobei die Zwischenergebnisse wiederum keine Socke interessieren. Dieses Verfahren eignet sich natürlich nur, wenn man die Zweierpotenzen auswendig herbeten kann - bei einer Dezimalzahl wie 7980653124 müsste man sich erst letztere rechnerisch ermitteln, was man schlicht vergessen kann. Das Verfahren mit der Teilung mit Rest dagegen funktioniert immer.

Gruß Eillicht zu Vensre

Hallo Max,

Am Übersichtlichsten wir es, wenn du das Ganze mit der binären Zahl machst.

2 entspricht dabei einer verschiebung um eine Stelle nach rechts

nehmen wir an wir sollen die Dezimahlzahl 204 als Dualzahl
darstellen.

Mit dem folgenden Algorithmus kommt man ans Ziel:

204 : 2 = 102 Rest 0

110011002 :210 = 11001102 R 02

102 : 2 = 51 Rest 0

11001102 :210 = 1100112 R 02

51 : 2 = 25 Rest 1

1100112 :210 = 110012 R 12

25 : 2 = 12 Rest 1

110012 :210 = 11002 R 12

Den Rest kannst du selber machen und auch die Zwischenresultate wieder in die dezimale Schreibweise überführen :wink:

MfG Peter(TOO)