Hardwarenahes Rechnen < Algor.+Datenstr. < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
|
Aufgabe | Thema: Hardwarenahes Rechnen mit Dualzahlen |
Hi liebe Leute,
ich brauche ein wenig Hilfe im Bereich der Dualzahlen/Stellenwertsysteme! Wir haben in der Volesung bisher die Verfahren der fortgesetzten Division/Multiplikation behandelt. Dies ist alles relativ simpel. Ich habe speziell ein Problem bei der Darstellung negativer Zahlen nach den folgenden drei Binärdarstellungen:
- Binärwert mit Vorzeichen
- n-stelliges Einerkomplement [mm] K_{1}
[/mm]
- n-stelliges Zweierkomplement [mm] K_{2}
[/mm]
Nehmen wir mal das Zweierkomplement. Dort sollen wir z.B. die Zahl - 150 darstellen. Das System (so wie ich es verstanden habe) ist doch hierbei:
Bis - 64 -> 7-stellig
Bis - 128 -> 8-stellig
Bis - 256 -> 9-stellig usw
Dann müsste doch - 150 = 101101010 sein, oder? Unser Prof. meinte das man erst negiert, und dann mit 1 addiert? Meine Kernfrage nun:
Er sagte, wenn man nun diese - 150 z.B. 10-stellig darstellen möchte, dann muss man für positive Zahlen mit 0 und für negative Zahlen mit 1 auffüllen? Das heißt, das dann aus 101101010 -> 1101101010 ??? Ist das denn nicht was anderes? Verstehe ich nicht...
Ich hoffe jemand von Euch kann mir weiterhelfen, da die Klausur bald ansteht
*lächel*.
Liebe Grüße
Analytiker
|
|
|
|
Hallo Analytiker,
> Dann müsste doch - 150 = 101101010 sein, oder?
Ich denke, das stimmt.
> Er sagte, wenn man nun diese - 150 z.B. 10-stellig
> darstellen möchte, dann muss man für positive Zahlen mit 0
> und für negative Zahlen mit 1 auffüllen? Das heißt, das
> dann aus 101101010 -> 1101101010 ??? Ist das denn nicht was
> anderes? Verstehe ich nicht...
Das man für positive Zahlen mit 0 auffüllen muß, stimmt wohl, denn eine Zahl ändert sich dadurch ja nicht. Z.B. ist [mm]2\cdot{0}+2^0\cdot{1}=1[/mm]. Und beim Auffüllen mit 1en kann man diese erste Feststellung benutzen. Betrachten wir mal zwei kleinere Dualsysteme:
000 (0) 100 (-4)
001 (1) 111 (-1)
010 (2) 110 (-2)
011 (3) 101 (-3)
und
00 (0) 10 (-2)
01 (1) 11 (-1)
Es ist klar, daß "00 = 000" und "01 = 001" gilt. Und wie machst du nun z.B. 01 negativ? Indem du zuerst alle Bits dieser Zahl negierst und dann 1 dazuaddierst. Allerdings werden hierbei alle Änderungen nur an dieser Zahl vorgenommen. Du invertierst ja nur diese zwei Bits; und auch das Addieren von 1 führt dich von 10 auf 11. D.h. du änderst immer nur diese 2 Bits und mußt z.B. keine weiteren Bits anhängen um die Zahl negativ zu machen. D.h. was mußt du tun, um die Zahl 0...0 01 negativ zu machen? Es reicht wohl 01 oder generell eine 2-stellige Zahl PP zu negieren und gemäß der Regel, das zuerst alle Bits invertiert werden müssen, aus 0...0 -> 1...1 zu machen. Denn die anschließende Addition von 1 würde an der Stellenanzahl deiner 2-stelligen Zahl ja nichts ändern. Hier ist es also dasselbe, also ob du an deine bereits negierte Zahl noch die entsprechende Anzahl an 1en dranhängst. Allerdings müssen wir hier wohl noch ein Paar Spezialfälle abdecken. :-(
[mm]0\dotsm 0\,00 \rightarrow 1\dotsm 1\,11 \xrightarrow{+1} 0\dotsm 0\,00[/mm] (klappt also)
Betrachten wir eine Zahl der Form 10...0. Diese war also im ursprünglichen Stellensystem negativ, weshalb wir hier gemäß dem Prof. 1en anhängen müssen:
1...1 10...0
Na ja, wenn man von 10...0 im ursprünglichen System eine 1 abzog, so kam 01...1 raus und nachdem Invertieren erhielt man wieder 10...0. Das heißt die Zahl änderte sich nicht. D.h. nach dem Umwandeln erhält man
0...0 10...0
Und das ergibt ja auch Sinn. 1...1 10...0 steht für die negative Zahl -10...0 und 0...0 10...0 ist ihr positiver "Zwilling". Mehr Spezialfälle sehe ich da jetzt nicht.
Grüße
Karl
[Bild Nr. 1 (fehlt/gelöscht)]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:30 So 27.05.2007 | Autor: | Analytiker |
Hi Karl,
vielen Dank für deine Antwort. Ergibt ja doch Sinn *lächel*... werde mir nochmal mein Skript ansehen, da muss ich mir irgendwas falsch notiert haben...
Liebe Grüße
Analytiker
|
|
|
|