PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe bei Zweierkomplementbildung und Primfaktorzerlegung



Thor_
22.09.2012, 18:26
Hallo zusammen

Ich bin an meinen Hausaufgaben und komme da nicht weiter.

1.) Die Bildung des Zweierkomplements, da komme ich nicht wirklich weiter. Die Aufgabe lautet:


Die Dezimalzahlen 22 und 15 sind in ZK-Darstellung mit n = 7 darzustellen >und zu
addieren. Wie lautet das Resultat in ZK-Darstellung?

Also, bilden wir mal die Binärzahlen von 22 und 15:

10110 (22)
1111 (15)

dann n=7 machen

0010110 (22)
0001111 (15)

dann muss für das einerkomplement invertiert werden:

1101001 (105) ehemals 22
1110000 (112) ehemals 15

dann für das zweierkomplement 1 addiert werden

1101010 (106)
1110001 (113)

nun die Addition der beiden Zahlen

1101010
1110001
_______
0011011 (27)

Das ich etwas falsch mache ist mir schon klar, ich komme nur nicht dahinter was -.-. Könnte mir jemand erläutern wie das Ganze genau funktioniert.
Noch kurz zur Kontrolle: Ich glaube zu wissen, dass das geniale an der Zweierkomplement-Darstellung ist, dass man Subtraktionen durch Additionen darstellt, also z.B.: anstatt das man rechnet 4-3 kann man mit dem Zweierkomplement 4+(-3) rechnen, was die konzipierung der ALU einfacher gestaltet. Ist das so korrekt?

Nun die zweite Frage=)


Kürzen Sie den folgenden Bruch soweit wie möglich: 654322/5561737

Wenn ich in die Lösungen schaue, wird das da mit der Primfaktorzerlegung gemacht. Ich weis wie die Primfaktorzerlegung funktioniert, habe dazu aber eine Frage:
Funktioniert die wirklich nur durch "ausprobieren"?

Also wenn man 654322 hat schaut man: geht das durch 2?
falls ja
rechne durch 2
falls nein
überprüfe ob teilbar durch nächste Primzahl

Oder was ist da der Trick? Weil sonst wär das ja im Prinzip "Bruto-Force-Mathe"^^;)

Ich hoffe, dass Ihr meine Verwirrungsknoten im Hirn auflösen könnt=)

Liebe Grüsse


Thor!

Klebwax
22.09.2012, 19:09
Haben dir die Antworten von http://www.mikrocontroller.net nicht gefallen? Und schon mal dran gedacht, daß dein Lehrer hier mitliest?

MfG Klebwax

Thor_
22.09.2012, 19:24
Hi Klebwax


Haben dir die Antworten von http://www.mikrocontroller.net nicht gefallen?
Jein, leider konnte ich damit nicht viel anfangen. Und Wikipedia habe ich natürlich schon durchforstet, genauso wie diverse Youtube Anleitungen - komme aber einfach nicht weiter


Und schon mal dran gedacht, daß dein Lehrer hier mitliest?
Bisher nicht, wüsste aber nicht worin dabei das Problem liegt, zeigen meine Fragen doch, dass ich die Thematik verstehen will und mir auch Hilfe hole. Ansonsten könnte ich das Ganze einfach durch den Windows-Rechner jagen, bringt mir aber nix

Grüsse

Thegon
22.09.2012, 20:36
1101010 (-22)
1110001 (-15)
_______
1011011 (= -37)

Beide Zahlen haben an der Stelle mit dem Stellenwert 5 eine Eins (rot markiert) . Eins und eins gibt null (blau), eins weiter. Bei der Stelle mit dem Stellenwert 6 stehen auch bei beiden Zahlen eine Eins (grün markiert). Eins plus Eins plus der Übertrag von der vorherigen Stelle gibt wieder Eins (orange und fett) , und nicht null. Ich nehme einmal an du hast den Übertrag vergessen. Somit liegt das Ergebnis wieder vorzeichenrichtig in 2K - Darstellung vor und ergibt (- 37).

Mfg Thegon

Thor_
23.09.2012, 10:42
Hi Thegon

Ich danke dir vielmals für deine Antwort, glaub jetzt komm ich dahinter (so langsam:))
habe diese Vorschrift für die Rückwandlung benutzt:

Wenn man eine Zahl von der Zweierkomplementdarstellung ins Dezimalsystem umkodieren will, muss man folgendermaßen (umgekehrt entsprechend der Umwandlung vom Dezimalsystem in die Zweierkomplementdarstellung) vorgehen:


Erste Stelle anschauen: wenn Ziffer = 1: Zahl negativ, Ziffer = 0: Zahl positiv.
Zahl ist positiv: Umrechnung vom Binärsystem ins Dezimalsystem ist bereits möglich;
Zahl ist negativ: Man subtrahiert 1 und negiert die einzelnen Ziffern. (Dieser Schritt lässt sich für den Menschen vereinfachen: Man negiert zuerst die einzelnen Ziffern und addiert hinterher 1, was zum selben Ergebnis führt.)
Die entstandene, entsprechend positive Zahl im Binärsystem rechnet man ins Dezimalsystem um.
Wenn negativ, ein "−" vor die Zahl setzen.

Nur eine Verständnisfrage: In der Wikipedia steht:


Bei der Codierung in der Zweierkomplementdarstellung ist dagegen die explizite Unterscheidung zwischen einem ausgezeichneten Vorzeichenbit und den Bits, die den Betrag beschreiben, nicht notwendig. Negative Zahlen sind daran zu erkennen, dass das höchstwertige Bit den Wert 1 hat. Bei 0 liegt eine positive Zahl oder der Wert 0 vor.

Im Prinzip stimmt das so ja nicht: Das Zweierkomplement bzw. die Zweierkomplementdarstellung ist doch auch eine Konvention, die besagt:
Hey, diese Binäre Zahl ist in Zweierkomplementdarstellung kodiert, also interpretiere die erste Ziffer als Vorzeichen und nicht als Wert.

Oder? ;)

Grüsse! Und danke!

Leider doch noch nicht so klar! :( und zwar:

Das Zweierkomplement soll doch dazu da sein, dass man Subtraktionen durch Additionen ausdrücken kann und einfach so korrekt rechnen kann.
Bei uns kommt ja aber -37 raus anstatt korrekterweise 37.
Heist das, ich rechne nur Dezimal negative Zahlen ins Zweierkomplement um um sie verrechnen zu können? Und positive rechne ich weiterhin normal?
Sprich: (in pseudocode)



Frage Zahl a und b ab:
wenn a == negativ
a = Zweierkomplement von a
wenn b == negativ
b = Zweierkomplement von b
c = a + b
Ausgabe c

Kampi
23.09.2012, 10:57
Ja mehr steht da auch nicht :) nur halt komplizierter ausgedrückt ^.^

Thegon
23.09.2012, 12:26
Das Zweierkomplement soll doch dazu da sein, dass man Subtraktionen durch Additionen ausdrücken kann und einfach so korrekt rechnen kann.
Bei uns kommt ja aber -37 raus anstatt korrekterweise 37.
Heist das, ich rechne nur Dezimal negative Zahlen ins Zweierkomplement um um sie verrechnen zu können? Und positive rechne ich weiterhin normal?


Also:
Die Zweierkomplementdarstellung ist dazu da, auch negative Zahlen darstellen zu können. Im Prinzip funktioniert das so:
die erste Stelle (MSB) hat ein negatives Vorzeichen, die anderen ein posetives.
So was heißt das: Wenn du eine n= 7 Zahl hast (wie oben), dann hätte die erste Stelle den Stellenwert 2^6 = 64, klar.
Da diese Zahl aber in 2K - Darstellung vorliert (das muss man dazuschreiben, denn nur anhand der Bits kann man das nicht erkennen, es könnte ja auch eine Zahl im 1K sein oder ein coodiertes ASCII - Zeichen) hat die höchstwertige Stelle einen Stellenwert von (-64). Alle anderen sind posetiv (also stelle 5 hat stellenwert + 32 usw.)

somit folgt:
1111111 = (-1) und 1000000 = (-64)
Klar warum?
(-64)
+ 32
+ 16
+ 8
+ 4
+ 2
+ 1
____
(-1)

Das da -37 raus gekommen ist, stimmt ganz genau, denn wenn du von 22 das 2K bildest, dann hast du (-22), und wenn du von 15 das 2k bildest, dann hast du (-15). Wenn man also von einer posetiven Zahl eine andere posetive Zahl abziehen will, dann müsste man diese subtrahieren und das ist aufwendig. Also kann man von der Zahl, die man subtrahieren will, das 2K bilden, und sie einfach dazu addieren!
Darum gehts. Man kann eine Subtraktion durch eine Addition ausführen, was maschinell (im Rechenwerk) leicher zu realisieren ist.

Ein Beispiel:

10
-5 'Fünf wird von Zehn subtrahiert
_____
5

10
+(-5) 'zu Zehn wird minus 5 dazuaddiert, was zum gleichen Ergebnis führt
______
5

Klar?

Mfg Thegon

Thor_
23.09.2012, 17:24
Hi Thegon!

Jaaaaa, dankeee=) Jetzt hab ichs verstanden und bin restlos glücklich=) Der Thread wird ausgedruckt und zu den Unterlagen gelegt, so dass ichs in Zukunft in einer mir verständlichen Sprache nachschauen kann=)
Erste Woche Informatik Studium, und schon Stress, Zweifel und Verzweiflung...=)

Thegon
23.09.2012, 18:08
Dann sind meine Tippfehler jetzt verewigt ;-) *peinlich*

Freut mich wenns dir geholfen hat ;-)

Mfg Thegon