Übung zur Vorlesung Informatik 1 Sarah Theobald, M.Sc. Arbeitsblatt 5 vom 15.12.2016 Wiederholung für die Ferien Hinweise • Überprüfen Sie erst Ihre RAM - Programme mit RAMSES nachdem Sie eine Lösung auf Papier gefunden haben • Versuchen Sie die Boole’schen Aufgaben ohne das Regelblatt zu lösen • Versuchen Sie keinen Taschenrechner bei den Berechnungen im dritten Teil zu verwenden Nehmen Sie sich die Hinweise zu Herzen, da Sie in der Klausur auch keine Hilfsmittel verwenden dürfen! Thema: Random Access Machine (1) NOT Schreiben Sie ein möglichst kurzes RAM - Programm, das für das Eingabebit a (in s[0]) das Ergebnis von N OT : ā in Speicherstelle s[1] schreibt. (2) Teilbarkeit durch 20 Schreiben Sie ein RAM - Programm, das bei einer vorgebenen Zahl die Teilbarkeit durch 20 prüft. Eine Zahl ist durch 20 teilbar, wenn die letzte Stelle eine 0 und die vorletzte Stelle gerade ist. 1 (3) Perrin - Folge Schreiben Sie ein RAM - Programm zur Berechnung der Perrin - Folge von n natürlichen Gliedern. Die Glieder der Perrin - Folge werden wie folgt definiert: Pn = Pn−2 + Pn−3 wobei P0 = 3, P1 = 0, P2 = 2 Die Anzahl der zu berechnenden Glieder steht in s[0], die einzelnen Glieder in s[1], s[2], s[3] . . . s[n]. Lesen Sie hierzu auch https://de.wikipedia.org/wiki/Perrin-Folge (4) Mod - Operation per Subtraktion Schreiben Sie ein RAM - Prgramm, das auf zwei vorgebene natürliche Zahlen (z in s[0], n in s[1]) die Mod - Operation per Subtraktion anwendet. Das Ergebnis soll in s[0] gespeichert werden. Die Formel zur Berechnung der MOD - Operation lautet z mod n := z z −n· n (5) Betrag einer Zahl Schreiben Sie ein RAM - Programm, das für die Eingabe a (in s[0]) den Wert ihres Betrags |a| in die Speicherstelle s[1] schreibt. (6) Collatz - Folge Geben sei die Zahlenfolge a0 = a, an+1 = an/2, falls a gerade 3 · an + 1, falls a ungerade Wenn die Folge beispielsweise mit a0 = 15 beginnt, so nimmt sie nacheinander folgende Werte ai an: 15 46 23 70 35 106 53 160 80 40 20 10 5 16 8 4 2 1 Schreiben Sie ein RAM - Programm, das die Eingabe a0 aus der Speicherstelle s[0] liest und die Folgeglieder nacheinander im Akkumulator berechnet und jeden Wert ai in der Speicherstelle s[i] speichert. Das Programm soll abbrechen, wenn im Akkumulator der 2 Wert 1 erreicht ist. Weitere Beispiele: 17 52 26 13 40 20 10 5 16 8 4 2 1 19 58 29 88 44 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 21 64 32 16 8 4 2 1 Thema: Boole’sche Algebra (1) (a + c) · (b + c) + ābc̄ = c + b (2) (x̄ + z̄) · x̄ + xz · (ȳ + x + z) · z + y = ȳz̄ (3) (a + b̄) · (a + c̄) · ac̄ + a = a (4) (a + b) · (ā + b) · (a + b̄) · (ā + b̄) = 0 (5) (ab + c̄) · (ā + b + c̄) = ā + c̄ (6) ab + c + ac = a · (b + c) Thema: Zahlendarstellung, arithmetische Operationen (1) Addieren Sie die Zahlen: 1. (E78CA)16 und (1F F 73)16 2. (101101101)2 und (1101010)2 3. (43213)5 und (40423)5 (2) Rechnen Sie folgende Zahlen in das jeweils angebene Zahlensystem um: 1. (187)10 =⇒ ( )9 2. (6346)7 =⇒ ( )10 =⇒ ( 3. (B0AB5)16 =⇒ ( )2 =⇒ ( )2 )8 3 (3) Wandeln Sie die folgenden Zahlen ins Binärsystem um (max. 4 Stellen nach dem Komma): 1. 7 20 2. 75,4394 3. 29 8 4. 1237,121 (4) Subtrahieren Sie die Zahlen einmal auf normale Weise und einmal mit Hilfe des Zweier - Komplements (beides im Binärsystem): 1. 123 - 32 2. 999 - 501 3. 473 - 43 (5) Subtrahieren Sie die Zahlen: 1. (6463)7 − (148)7 2. (CAF BE)16 − (AF F E)16 3. (7351)9 − (380)9 (6) Multiplizieren Sie die Zahlen: 1. (101010)2 und (111)2 2. (4231)5 und (31)5 3. (6342)8 und (564)8 (7) Dividieren Sie die Zahlen: 1. (101010)2 und (1010)2 (mit Rest) 2. (21032)5 und (31)5 3. (6342)8 und (564)8 (mit Rest) 4