1. Übungsblatt

Werbung
Prof. Frederik Armknecht
Sascha Müller
Daniel Mäurer
Grundlagen der Informatik 3
Wintersemester 09/10
1. Übung
Abgabe: 03.11. – 09.11.2009
1 Präsenzübungen
1.1 Schnelltest
a) Welche der Aussagen treffen auf jeden Rechner in von Neumann-Architektur zu?
2
2
2
2
Es existiert ein getrennter Befehls- und Datenspeicher.
Er besitzt ein Rechenwerk.
Alle Befehle haben die gleiche Länge.
Er besitzt eine Komponente zur Kommunikation über Netzwerke.
2
2
2
2
2
BIOS (Basic Input Output System)
Speicherverwaltung
Speichercontroller
Prozessverwaltung
Graphische Benutzeroberfläche
2
2
2
2
2
Geringes Abstraktionsniveau
Gute Wartbarkeit
Hohe Effizienz
I. A. leichte Portabilität
Typsicherheit
b) Welches sind Bestandteile eines klassischen Betriebssystems?
c) Was sind die typischen Merkmale von Programmierung in Assembler-Sprachen?
d) Welche Aussagen zu Compiler, Assembler, Linker und Lader sind zutreffend?
2 Der Präprozessor übersetzt den Programmcode in eine andere Sprache.
2 Unter einem Compiler versteht man allgemein ein Programm, dass aus dem Code einer höheren Programmiersprache äquivalenten Programmcode einer niederen Sprache erzeugt.
2 Der Assembler erzeugt als Ausgabe nicht immer Maschinencode.
2 Der Linker verbindet mehrere Objekt-Programme zu einem ausführbaren Programm.
2 Der Lader wird jedes mal ausgeführt, wenn das Programm ausgeführt wird.
1.2 Gatter
Mithilfe der Gatter AND (·), OR (+) und dem Inverter können alle logischen Schaltungen implementiert werden. Man nutzt gerade diese drei Gatter, da ihre Bedeutung intuitiv ist und
man logische Ausdrücke leicht damit formulieren kann. Wir betrachten nun ein anderes,
ausdrucksstärkeres Gatter, das NAND, das in der Notationsweise aus der Vorlesung folgendermaßen dargestellt wird:
1
1. Übung
Grundlagen der Informatik 3, WS 09/10
wobei gilt out = A · B.
a) Erstellen Sie eine Wertetabelle für NAND.
b) Betrachten Sie die folgende Schaltung, die ausschließlich aus NAND-Gattern besteht:
Welche Funktion wird durch diese Schaltung implementiert? Verwenden Sie zur Vereinfachung die De Morganschen Gesetze:
x+y = x·y
x·y = x+y
c) Zeigen Sie, dass sich alle logischen Schaltungen mithilfe von ausschließlich NAND-Gattern
implementieren lassen, man also prinzipiell nur einen einzigen Gattertyp benötigt.
1.3 Zahlendarstellung
a) Gegeben sind die Zahlen 4638 und −42.
1. Stellen Sie diese Zahlen als 16-Bit breite Vorzeichen-Betragsdarstellung sowohl
binär als auch hexadezimal dar.
2. Stellen Sie diese Zahlen als 16-Bit 2er-Komplement dar.
b) Für welche Basis b gilt 121b = 10010 ?
c) Betrachten Sie die beiden 3-Bit-Zahlen a = 1112 und b = 1012 . Berechnen Sie mit
einem möglichst einfachen Verfahren a + b, a − b und a · b, ohne die Zahlen vorher in
die Dezimaldarstellung umzuwandeln.
Interpretieren Sie a und b nun als vorzeichenbehaftete 3-Bit Ganzzahlen in Zweierkomplementdarstellung. Können Sie die Ergebnisse, die Sie erhalten haben, irgendwie nutzen?
d) Um auch rationale Zahlen binär darstellen zu können, kann man die Formel von Kapitel 1, Folie 17 wie folgt verallgemeinern:
bn−1 bn−2 . . . b1 b0 , c1 c2 . . . cm−1 cm =
n −1
m
i =0
i =1
∑ bi 2 i + ∑ c i 2 − i
Die i. binäre Nachkommastelle wird also mit 2−i multipliziert.
2
1. Übung
Grundlagen der Informatik 3, WS 09/10
1. Stellen Sie die Binärzahl 1100, 1012 dezimal dar.
2. Approximieren Sie π ≈ 3, 14159265 binär auf 4 Nachkommastellen genau.
1.4 Gleitkommazahlen
Gegeben sei ein Rechner, der mit 8-Bit Gleitkommazahlen arbeitet. Diese 8 Bit teilen sich
auf in 1 Bit für das Vorzeichen, 3 Bit für den Exponenten und 4 Bit für die Mantisse:
V E E E M M M M
r = −1V · (1 + M ) · 2E−Bias
a) Wie groß ist der Bias, der für die Darstellung des Exponenten verwendet wird?
b) Wandeln Sie die Zahl 6, 25 in die beschriebene Darstellung um.
c) Wandeln Sie die Zahl −0, 78125 in die beschriebene Darstellung um.
d) Geben Sie ein Verfahren in Pseudocode an, mit dem zwei Zahlen, die in dieser Darstellung vorliegen, miteinander multipliziert werden können. Als Eingabe erhalten
Sie zwei Darstellungen von Gleitpunktzahlen als Tupel hV1 , M1 , E1 i bzw. hV2 , M2 , E2 i.
Wie berechnet man das Ausgabetupel hV3 , M3 , E3 i? Sonderfälle (wie 0, NaN oder ∞)
müssen Sie hier nicht betrachten.
function multiply ( hV1 , M1 , E1 i >, hV2 , M2 , E2 i ):
V3 :=
return hV3 , M3 , E3 i
e) Multiplizieren Sie mit diesem Verfahren die beiden Repräsentation von 6, 25 und
−0, 78125. Geben Sie das Ergebnis in Gleitkommadarstellung an und wandeln Sie
es in die Dezimalzahldarstellung um.
3
1. Übung
Grundlagen der Informatik 3, WS 09/10
2 Hausübungen
2.1 Negation von Integern
In der Zweierkomplementdarstellung wird eine Zahl negiert, indem man sie invertiert und
1 addiert, also − x := x + 1. Zeigen Sie, dass dann auch gilt − x = x − 1.
4 Punkte
2.2 Schnelle Integer-Multiplikation
Wie Sie in Aufgabe 1.3 c gesehen haben, hat die Multiplikation von Binärzahlen quadratische Komplexität in der Anzahl der Bit-Operationen. Durch Ausnutzung der Bit-Darstellung
kann man dies jedoch für gewisse Multiplikatoren stark beschleunigen. Wir nutzen hierzu
aus, dass man an Bitwerte eine 0 anhängen kann, um sie mit 2 zu multiplizieren. Der Syntax
der Programmiersprache C folgend schreiben wir a << b, wenn wir an einen Wert a eine
Anzahl von b Nullen anhängen (und damit a · 2b berechnen). Damit lässt sich zum Beispiel
das Ergebnis von 65x effizient mit einem solchen Bit-Shift und einer Addition erreichen, da
65 = 26 + 1 und daher 65x = ( x << 6) + x.
Optimieren Sie die folgenden Operationen auf diese Weise und geben Sie jeweils die Anzahl
der Bit-Operationen an. Sie können außerdem die Formeln aus der Aufgabenstellung von
Aufgabe 2.1 verwenden.
a) 5x =
1 Punkt
b) 162x =
1 Punkt
c) −1024x =
1 Punkt
2.3 Gleitpunktzahlen
Gegeben ist eine Gleitpunktzahl G im einfach genauen IEEE-754 Standard in Hexadezimaldarstellung
G = C080 000016
Leiten Sie den dezimalen Wert von G her. Der Lösungsweg muss klar erkennbar sein!
3 Punkte
4
Herunterladen