PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu Binärsystem (Subtraktion) und Zweierkomplement


AtTheEndofAugust
2008-07-13, 08:51:48
Stellen Sie 199 – 162 als Dualzahl dar. Bilden Sie dazu das Zweierkompliment


199 als Dualzahl: 11000111

162 als Dualzahl: 10100010



Aber wie geh ich jetzt weiter vor um die Aufgabe zu erfüllen?

(del)
2008-07-13, 09:09:48
Beispiel:

8 -5

8: 01000
5: 00101 => invertieren: 11010 => 1 addieren: -5=11011

8+(-5) = 01000+11011=00011 (Überlauf einfach ignorieren)
So, was bedeutet jetzt 00011? die erste ziffer ist eine null, daher musst du zur Rückrechnung nicht nochmal ein komplement bilden oder so. Also:
00011=3

Beim Überlauf musst du nur aufpassen, wenn deine Zahlen aus deinem Wertebereich rausführen, dafür gibts auch eine Regel, fällt mir gerade nicht ein...

AtTheEndofAugust
2008-07-13, 09:33:14
Okay also bildet man nur von dem Subtrahend die Invertion?

Wird der Überlauf hierbei immer ignoriert?

Und wenn die erste Ziffer eine 1 ist - das dann?

tatarus
2008-07-13, 10:35:01
Der Überlauf darf nicht ignoriert werden, wenn beide Zahlen dasselbe Vorzeichen hatten. Bsp.

-5-5=-10

1011+1011= (1)0110

0110 wäre positiv (nämlich +6). Das Ergebnis muss aber negativ sein, da zwei negative Zahlen addiert werden. Dieser Fall würde vom Overflow-Bit eines Addierers angezeigt.

Eine führende 1 zeigt - an.

(del)
2008-07-13, 10:54:25
Stimmt, tatarus, so war das. Ist schon etwas länger her bei mir...

@AtTheEndofAugust: Um aus einer positiven Zahl die negative Zahl zu bilden invertiert man die Bits und addiert eins drauf. Umgekehrt kann man _genauso_ auch aus einer negativen Zahl die zugehörige positive machen:

3: 101 -> -3: invertieren: 010 , 1 addieren: -3=011 -> wieder invertieren: 100, 1 addieren: 3=101

Das geile an der 2K Darstellung ist halt, dass du dadurch Subtraktionen von einem Addierer erledigen lassen kannst. Der Ausdruck für den Überlauf ist wie tatarus sagt:
(1.Bit_erster_Summand AND 1.Bit_zweiter_Summand AND NOT 1.Bit_Ergebnis)
Sobald du da 1 rausbekommst, ist dein Ergebnis falsch. In meinem Beispiel bekommst du da aber Null raus, dir läuft beim Addieren trotzdem eine 1 vorne raus, in diesem Falle darfst du das getrost ignorieren. Das ist so ziemlich die einzige Schwierigkeit beim 2K rechnen.

AtTheEndofAugust
2008-07-13, 12:07:36
aber woher weiss ich denn zB bei der 101 dass das nicht die 5 ist?

(del)
2008-07-13, 14:24:08
die erste ziffer gibt dir das vorzeichen. d.h. sobald deine zahl mit 1 beginnt ist sie negativ.

AtTheEndofAugust
2008-07-13, 14:46:14
okay und wenn ich jetzt die dualzahl 1011 habe

woher weiss ich, ob das die 11 ist oder die -3 ?

(del)
2008-07-13, 14:58:26
wenn es eine Zahl in 2K Darstellung ist, dann gibt dir _immer_ die erste Ziffer das Vorzeichen. Sie ist also negativ. Also die -3

Monger
2008-07-13, 14:58:41
Definitionssache. Entweder reservierst du dir die Hälfte des Zahlenraums für negative Zahlen, oder eben nicht. Sowas muss vereinbart worden sein.

(del)
2008-07-13, 15:00:37
Es geht ja jetzt explizit um die 2K Darstellung, deswegen ist das so definiert, alles andere macht keinen Sinn.

AtTheEndofAugust
2008-07-13, 15:05:34
Was ist die 2k Darstellung, und was sagt mir, dass es sich hierbei um Diese handelt?

Monger
2008-07-13, 15:10:16
2k = 2er Komplement.

Der Sinn des 2er Komplements ist es ja im Grunde, eine Zahl in den negativen Bereich rüberzuspiegeln, damit du sie miteinander verrechnen kannst.

(del)
2008-07-13, 15:52:22
vllt darf ich den wiki artikel empfehlen http://de.wikipedia.org/wiki/2K-Zahl

AtTheEndofAugust
2008-07-13, 16:18:40
hab ich schon studiert, aber irgendwo hakts noch ich meine wenn ich dvon 107 die Dualzahl bilde kommt heraus:

1101011

Ne 1 am anfang, also irgendeine Negative Zahl?

Wo ist der Zusammenhang?

Monger
2008-07-13, 17:28:13
Nein. Nehmen wir mal an, wir nehmen eine Zahl mit 8 Bit, also acht Stellen. Dann ist deine 107

01101011

Einer Komplement:
10010100

Zweier Komplement:
10010101

Nehmen wir also mal an, du willst 122 - 107 rechnen.

122: 01111010
-107: 10010101 (zweier Komplement)
= 00001111 (durch Addition der beiden oberen Werte)

00001111 -> 8+4+2+1 = 15 Et Voilà!


Die 1 vorne dran kommt ganz automatisch, sobald du zu einer positiven Zahl das 2er Komplement suchst.

Aber du musst immer von einer fixen Anzahl von Stellen angehen, und dann auch wirklich ALLE beachten und invertieren! Sonst klappt es nicht.

AtTheEndofAugust
2008-07-13, 20:11:46
K habs jetzt kapiert danke, aber schon die nächste Frage:

1. )Nennen Sie einen wesentlichen Nachteil bei der Zahlendarstellung mit Vorzeichen und Betrag mithilfe einer 3-stelligen Dualzahl. Welche Lösung gibt es für das Problem?

2.) Wie sieht die IEEE Darstellung bei Gleitkomazahlen aus?

(del)
2008-07-13, 20:15:03
aber sonst geht's dir auch noch gut oder was? Wir rechnen dir hier doch nicht dein Übungsblatt vor, besorg dir nen Script oder ließ in der Wiki, da stehen die Sachen.

AtTheEndofAugust
2008-07-13, 22:30:06
Würd ich ja =)

Versteh aber die Fragestellung nicht