Erste Schritte Negative Dezimalzahl in Binaerzahl umwandeln und addieren

JuliaT

Mitglied
Ich sitze gerade an der letzten Aufgabe einer Informatikklausur, durch welche ich durchgefallen bin.

Vor allem gilt meine Frage der Aufgabe b), aber vielleicht kann auch jemand ueber a) mal drueberschauen, ob das so in ordnung ist.

a) Auf der von-Neumann-Architektur basieren die meisten modernen Rechner. Nennen Sie die wesentlichen Elemente dieser Architektur und erlaeutern Sie kurz den Zweck des jeweiligen Elements.

Meine Antwort: Computerprogramme und die zu verarbeitenden Daten koennen zusammen im gleichen Speicher abgelegt werden. Verschiedene Programme koennen so unter derselben Hardwarearchitektur ablaufen.
Eingabewerk: Dort kommen Daten an und werden in das System eingefuehrt.
Speicherwerk: Hier befinden sich die Daten und das zu bearbeitende Programm. Hier steht drin, was ueberhaupt passieren soll.
Ausgabewerk: Daten, welche zwischendurch bearbeitet wurden, werden hier ausgegeben.
CPU (Central Processing Unit): Ein kleiner, haeufig viereckiger Kasten, der auf dem Motherboard sitzt. Er hat im Prinzip zwei wichtige Komponenten:
Steuerwerk und Rechenwerk.
Das Rechenwerk funktioniert sehr simpel. Es ist das Objekt, welches im Prozessor oder Rechner rechnet.
Steuerwerk: Es ueberwacht alles und ist zustaendig die einzelnen Objekte zu steuern. Es sagt was passieren soll, z.B. ob etwas geladen oder berechnet werden soll. Vom Steuerwerk gehen viele Steuerleitungen zu den anderen Werken, wie Eingabewerk, Speicherwerk und Ausgabewerk.
Ablauf:
Daten kommen im Eingabewerk an, das Steuerwerk sendet das Signal zum Laden der Daten-> Daten gehen weiter ans Speicherwerk-> Steuerwerk gibt Daten zur weiteren Bearbeitung an das Rechenwerk weiter-> Rechenwerk kann die Daten nun modifizieren-> Daten liegen modifiziert im Speicherwerk vor-> Daten werden aus dem Speicher geladen und befinden sich nun im Ausgabewerk
Im Grunde werden Daten also geladen, es wird etwas mit ihnen gemacht und sie werden wieder ausgegeben.
Wichtige Eigenschaften:
Die Struktur des Rechners ist unabhaengig vom zu loesenden Problem.
Fuer Daten, Programme und Resultate wird derselbe Speicher genutzt.
Von der urspruenglichen Programmabfolge kann durch Sprungbefehle abgewichen werden (man kann sich im Programm bewegen).
Daten werden binaer codiert.


b) Gegeben sind die beiden Dezimalzahlen A= 35 (runtergestellte 10) und B= -42 (runtergestellte 10). Geben Sie zunaechst explizit die Mindestanzahl an Bits an, die Sie zur korrekten Darstellung der beiden Zahlen im Binaersystem benoetigen. Erklaeren Sie kurz, warum die von Ihnen gewaehlte Anzahl ausreichend ist.
Wandeln Sie dann die beiden Zahlen mit Hilfe des 2er- Komplements in vorzeichenbehaftete Binaerzahlen um und addieren Sie die beiden Zahlen A + B. Zeigen Sie abschliessend, dass das Ergebnis der Addition der vorzeichenbehafteten Binaerzahlen dem Ergebnis der Addition der Dezimalzahlen entspricht.
Hinweis: Fuer die Erreichung der vollen Punktzahl fuer diese Aufgabe muessen alle Rechenschritte explizit angegeben werden.

Meine Loesung, bzw. so weit wie ich gekommen bin:

A= 35 (runtergestellte 10)

35:2= 17 Rest: 1
17:2= 8 Rest: 1
8:2= 4 Rest: 0
4:2=2 Rest: 0
2:2= 1 Rest: 0
1:2= 0 Rest: 1

Ergebnis: 35 (runtergestellte 10)= 100011 (runtergestellte 2)

Wir benoetigen mindestens 6 Bit, da jedes Bit genau eine 0 oder 1 ist.

B= -42 (runtergestellte 10)

42:2= 21 Rest: 0
21:2= 10 Rest: 1
10:2= 5 Rest: 0
5:2= 2 Rest: 1
2:2=1 Rest: 0
1:2= 0 Rest: 1

42 (runtegestellte 10)= 101010 (runtergestellte 2)

Negieren: 010101

Als naechstes muesste man an dieser Stelle + 1 hinzufuegen. In allen Beispielen die ich gefunden habe, stand hinten eine 0. Habe dann zwei verschiedene Methoden versucht, komme aber mit keiner auf ein richtiges Ergebnis.

Zuerst habe ich die 1 wirklich ganz normal addiert:

010101
+ 1
1
------------
010111

Zweite Alternative war das ich die 1 einfach hinten drangeschrieben habe:

0101011

Stimmt wirklich keine dieser beiden Varianten? Denn dann weiss ich wirklich nicht wie man weitermachen soll.
 

Joose

Top Contributor
Die vorgehensweise für -42 stimmt schon, erst die Dualzahl von 42 suchen, dann invertieren und + 1 rechnen.
Dein Problem du verwendest einfach nur 6 bit, für die korrekte Darstellung von -42 sind aber 8 bit notwendig.

Außerdem gibt das 1.Bit das Vorzeichen an, in diesem Fall wäre die Darstellung von 35 in Binär auch nicht wirklich korrekt.
 
Zuletzt bearbeitet:
K

kneitzel

Gast
Also das mit den 8 benötigten bit ist nicht richtig. 7 bit reichen auch. Halt die 6 bit zusammen mit dem Vorzeichenbit.

Also Vorgang ist dann:
42 in dualschreibweise: 101010
negieren: 010101
+1: 010110 (Da bist Du auf 010111 gekommen - das wäre aber dann +2 statt +1
Nun noch das Vorzeichbit: 1010110
Also sollte die -42 in 7Bit Darstellung 1010110 sein.
(Und das kann man auch mit dem Taschenrechner auf dem Computer testen. Im Windows-Taschenrechner in den Programmer Modus gehen -42 und dann sieht man unter dem Display die Darstellung mit 8 Bytes, die dann 111111111....111010110 ist. Also super, wir haben richtig gerechnet.

Und die Darstellung der positiven Zahl 35 ist korrekt. Nirgends ist ja gesagt gewesen, dass es eine Vorzeichenbehaftete Darstellung sein musste. Aber klar - wenn man in einem System mit negativen Zahlen rechnen will, dann wird ein weiteres Bit benötigt.
 

Neue Themen


Oben