Berufsakademie Stuttgart/Horb Studiengang Angewandte Informatik TIAI1004: Programmierung Dozent: Olaf Herden Stand: 01/2008 Programmierung Lösung zu Übungsblatt 1 (Grundbegriffe) Aufgabe 1 a) Beweisen Sie mittels Wahrheitstafeln das erste Gesetz von de Morgan! Beh.: ¬ (p ∧ q) ≡ (¬ p ∨ ¬ q) Berufsakademie Stuttgart/Horb Studiengang Angewandte Informatik TIAI1004: Programmierung Dozent: Olaf Herden Stand: 01/2008 c) Geben Sie an, ob die folgenden Sätze wahre oder falsche oder keine Aussagen sind! c1) „Eine Primzahl ist eine ganze Zahl, die ohne Rest nur durch sich selbst und 1 teilbar ist!“ Aussage ist falsch, da 1 die genannte Bedingung erfüllt, per Definition aber keine Primzahl ist. c2) „Komm her!“ Keine Aussage. c3) „Die Erde ist eine Scheibe.“ Aussage ist falsch. c4) „Bergab geht’s schneller als zu Fuß.“ Keine Aussage. Beweis: p q p∧q ¬(p ∧ q) ¬p ¬q (¬p ∨ ¬q) F F F T T T T F T F T T F T T F F T F T T T T T F F F F Werte in vierter und letzter Spalte sind gleich ⇒ Aussage ist wahr b) Es sei die folgende Variablenbelegung gegeben: x=3, y=5, z=7. Sind die folgende Aussagen wahr oder falsch? b1) x<y 3 < 5 = TRUE b2) ((2*x+y) < (y+z)) OR (3*z=21) ((2*3+5) < (5+7)) OR (3*7 = 21) = (11 < 12) OR (21 = 21) = TRUE OR TRUE = TRUE b3) ((2*x+y = 11) AND (y=z)) OR (3*z=19) ((2*3+5 = 11) AND (5=7)) OR (3*7=19) = ((11 = 11) AND FALSE) OR (21 = 19) = (TRUE AND FALSE) OR FALSE = FALSE OR FALSE = FALSE d) Gegeben seien die Aussagen: p: 2 ist die kleinste Primzahl. q: 8 > 5. r: Alle Quadratzahlen sind gerade. p ist wahr (Begr.: Definition von Primzahlen) q ist wahr r ist falsch (Gegenbeispiel: 5² = 25 ⇒ Es gibt ungerade Quadratzahlen) Geben Sie die Wahrheitswerte der folgenden Verknüpfungen an: d1) (p ∧ q) ∨ r (TRUE ∧ TRUE) ∨ FALSE = TRUE ∨ FALSE = TRUE d2) (p ∨ q) ∧ r (TRUE ∨ TRUE) ∧ FALSE = TRUE ∧ FALSE = FALSE d3) [p ∧ (¬q)] ∨ (p ∧ r) [TRUE ∧ (¬TRUE)] ∨ (TRUE ∧ FALSE) = [TRUE ∧ FALSE] ∨ (FALSE) = [FALSE] ∨ (FALSE) = FALSE Berufsakademie Stuttgart/Horb Studiengang Angewandte Informatik TIAI1004: Programmierung Dozent: Olaf Herden Stand: 01/2008 Berufsakademie Stuttgart/Horb Studiengang Angewandte Informatik TIAI1004: Programmierung Dozent: Olaf Herden Stand: 01/2008 e) Stellen Sie die Implikation p ⇒ q mittels der Operatoren ∧, ∨ und ¬ dar und beweisen 1100 1010 Sie dies mit einer Wahrheitstafel. 1101 1011 Beh.: p ⇒ q ≡ p ∨ ¬q 1110 1001 Beweis: 1111 1000 p q p⇒q ¬q p ∨ ¬q F F T T T F T F F F T F T T T T T T F T Werte in zweiter und letzter Spalte sind gleich ⇒ Aussage ist wahr Aufgabe 2 (5 Punkte) Neben den in der Vorlesung vorgestellten Codes Binärcode, Oktalcode, "normale" Dezimalzahlendarstellung und hexadezimale Zahlendarstellung, gibt es weitere Codes. Im BCD-Code (Binary coded decimal) wird z.B. jede Stelle einer Dezimalzahl als die entsprechende 4-bit breite Binärzahl kodiert. Beispiel: 59(10) = 0101 1001(BCD). Der Gray-Code ist ein sog. einschrittiger Code, d.h. beim Wechsel von einer Zahl zur nächsten wechselt jeweils nur ein Bit. Folgende Tabelle gibt die konkreten Codierungen an: Führen Sie die folgenden Umrechnungen durch: a) 111111111(2) nach BCD 111111111(2) = 28 + 27 + 26 + 25 + 24 + 23 + 22 + 21 + 20 = 511(10) = 0111 0001 0001(BCD) b) AF9(H) nach Binär AF9(H) = 1010 1111 1001(2) c) 10111111(2) nach Dezimal 10111111(2) = 27 + 25 + 24 + 23 + 22 + 21 + 20 = 191(10) d) 109(10) nach Hexadezimal 109(10) : 16 = 6 Rest 13(10) = D(H) 6(10) : 16 = 0 Rest 6(10) = 6(H) ⇒ 109(10) = 6D(H) e) 1110(Gray) nach Dezimal 1110(Gray) = 1011(2) = 23 + 21 + 20 = 11(10) Binär Gray 0000 0000 0001 0001 0010 0011 0011 0010 0100 0110 0101 0111 0110 0101 0111 0100 1000 1100 1001 1101 1010 1111 1011 1110 f) 657(8) nach Hexadezimal 657(8) = 6*8² + 5*8 + 7 = 431(10) 431 : 16 = 26 Rest 15(10) = F(H) 26 : 16 = 1 Rest 10(10) = A(H) 1 : 16 = 0 Rest 1 ⇒ 657(8) = 1AF(H) g) FFF(H) nach Dezimal FFF(H) = 15*16² + 15*16 + 15 = 4095(10) h) 10011000(2) nach Hexadezimal 10011000(2) = 98(H) Berufsakademie Stuttgart/Horb Studiengang Angewandte Informatik TIAI1004: Programmierung Dozent: Olaf Herden Stand: 01/2008 i) 126.375(10) nach Binär 126 : 2 = 63 Rest 0 63 : 2 = 31 Rest 1 31 : 2 = 15 Rest 1 15 : 2 = 7 Rest 1 7 : 2 = 3 Rest 1 3 : 2 = 1 Rest 1 1 : 2 = 0 Rest 1 Aufgabe 4 a) Stellen Sie die folgenden Zahlen als 8-bit-Dualzahlen im 2-Komplement dar! a1) –22 a2) –57 a3) 66 a4) 312 0,375 * 2 = 0,750 0,750 * 2 = 1,5 0,5 * 2 = 1 ⇒ 126,375(10) = 1111110,011(2) j) Berufsakademie Stuttgart/Horb Studiengang Angewandte Informatik TIAI1004: Programmierung Dozent: Olaf Herden Stand: 01/2008 AF5F4(16) nach Oktal AF5F4(16) = 10*164 + 15*163 + 5*162 + 15*16 + 4 = 718324(10) 718324 : 8 = 89790 Rest 4 89790 : 8 = 11223 Rest 6 11223 : 8 = 1402 Rest 7 1402 : 8 = 175 Rest 2 175 : 8 = 21 Rest 7 21 : 8 = 2 Rest 5 2:8= 0 Rest 2 ⇒ AF5F4(16) = 2572764(8) Aufgabe 3 Berechnen Sie im jeweiligen Zahlensystem: a) b) c) d) 11001 + 11001 Ü11 1 110010 11101 - 1011 Ü 1 10010 9FC3 + 25AC Ü 11 C56F 11001*11001 11001 + 11001 + 11001 Ü 11 11 1001110001 a1) a2) 22 in Binärzahl wandeln 22 : 2 = 11 Rest 0 11 : 2 = 5 Rest 1 5 : 2 = 2 Rest 1 2 : 2 = 1 Rest 0 1 : 2 = 0 Rest 1 ⇒ 2210 = 101102 2-Komplement bilden: 00010110 11101001 + 1 = 11101010 ⇒ -2210 = 111010102 57 in Binärzahl wandeln 57 : 2 = 28 Rest 1 28 : 2 = 14 Rest 0 14 : 2 = 7 Rest 0 7 : 2 = 3 Rest 1 3 : 2 = 1 Rest 1 1 : 2 = 0 Rest 1 ⇒ 5710 = 1110012 2-Komplement bilden: 00111001 11000110 + 1 = 11000111 ⇒ -5710 = 110001112 a3) a4) 66 in Binärzahl wandeln 66 : 2 = 33 Rest 33 : 2 = 16 Rest 16 : 2 = 8 Rest 8 : 2 = 4 Rest 4 : 2 = 2 Rest 2 : 2 = 1 Rest 1 : 2 = 0 Rest ⇒ 6610 = 010000102 0 1 0 0 0 0 1 312 in Binärzahl wandeln 312 : 2 = 156 Rest 0 156 : 2 = 78 Rest 0 78 : 2 = 39 Rest 0 39 : 2 = 19 Rest 1 19 : 2 = 9 Rest 1 9 : 2 = 4 Rest 1 4 : 2 = 2 Rest 0 2 : 2 = 1 Rest 0 1 : 2 = 0 Rest 1 ⇒ 31210 = 1001110002 Lässt sich nicht als 8-bit-Zahl darstellen! Berufsakademie Stuttgart/Horb Studiengang Angewandte Informatik TIAI1004: Programmierung Dozent: Olaf Herden Stand: 01/2008 b) Lösen Sie die folgenden Rechnungen mit 8-bit-Dualzahlen im 2-Komplement! b1) 42 + 17 b2) 42 – 17 b3) – 42 + 17 b4) – 42 – 17 g g b1) b2) Rechnung „ganz normal“ im Binärsystem 42 in Binärzahl wandeln 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 ⇒ 4210 = 001010102 Subtraktion erfolgt durch Addition des 2-Komplements. ⇒1710 = 000100012 (siehe b1) 17 in Binärzahl wandeln 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 ⇒ 1710 = 000100012 00101010 + 00010001 00111011 b3) -42 ist 2-Komplement von 4210 = 001010102 2-Komplement bilden 00101010 11010101 + 1 11010110 11010110 + 00010001 Ü 1 11100111 2-Komplement bilden 00010001 11101110 + 1 11101111 00101010 + 11101111 Ü 11 111 100011001 b4) 11010110 (siehe b3) + 11101111 (siehe b2) Ü 111111 111000101 Berufsakademie Stuttgart/Horb Studiengang Angewandte Informatik TIAI1004: Programmierung Dozent: Olaf Herden Stand: 01/2008 c) Fritz ist seit einiger Zeit interessierter Hobby-Programmierer. Er berichtet, dass er zwei positive Zahlen festgelegt hat. Bei der Addition hat er eine negative Zahl als Resultat bekommen. Erläutern Sie dieses Phänomen! Fritz ist Opfer eines Überlaufs geworden. Die negativen Zahlen besitzen eine führende 1, die positiven eine 0. Werden nun zwei große positive Zahlen (z.B. bei 8-Bit-Zahlen 01100111 und 01100111) ergibt sich eine negative Zahl (im Bsp. 11001110). Aufgabe 5 a) Stellen Sie die Dezimalzahlen 173,265625 -3216,9375 -7,0078125 und 1,25 als binäre Gleitkommazahlen nach IEEE 754-Standard mit einfacher Genauigkeit dar! Größe Vorzeichen: 1 Bit Größe Charakteristik: 8 Bit Größe Mantisse: 23 Bit Verschiebekonstante Kv = 127(10) = 01111111(2) 173,265625(10) = 10101101,010001(2) = 1,0101101010001 * 27(2) Vorzeichen: 0 Charakteristik: 7(10) + Kv = 00000111(2) + 0111111(2) = 10000110(2) Mantisse: 01011010100010...0 Insgesamt: 0 10000110 01011010100010...0 -3216,9375(10) = -110010010000,1111(2) = -1,100100100001111 * 211(2) Vorzeichen: 1 Charakteristik: 11(10) + Kv = 00001011(2) + 0111111(2) = 10001010(2) Mantisse: 1001001000011110...0 Insgesamt: 1 10001010 1001001000011110...0 Berufsakademie Stuttgart/Horb Studiengang Angewandte Informatik TIAI1004: Programmierung Dozent: Olaf Herden Stand: 01/2008 -7,0078125(10) = -111,0000001(2) = -1,110000001 * 22(2) Vorzeichen: 1 Charakteristik: 2(10) + Kv = 00000010(2) + 0111111(2) = 10000001(2) Mantisse: 1100000010...0 Insgesamt: 1 10000001 1,1100000010...0 1,25(10) = 1,01(2) = 1,01 * 20(2) Vorzeichen: 0 Charakteristik: 0(10) + Kv = 0111111(2) Mantisse: 010...0 Insgesamt: 0 0111111 010...0 b) Stellen Sie die folgenden binären Gleitkommazahlen nach IEEE 754-Standard mit einfacher Genauigkeit als Dezimalzahlen dar: 10010100100010...0 011111111000...0 011111111010...0 011111111000010...0 011110111000...0 000000001110...0 10010100100010...0 Vorzeichen: Exponent: 00101001 – Kv = 00101001(2) – 01111111(2) = 11010110(2) = -86(10) Mantisse: 00010...0 Insgesamt: -1,0001 * 2-86 = -1,0625 * 2-86 ≈ -1,3732 * 10-26 011111111000...0 Unendlich (per Definition) 011111111010...0 NaN = Not a number = Keine Zahl (per Definition) 011111111000010...0 NaN = Not a number = Keine Zahl (per Definition) Berufsakademie Stuttgart/Horb Studiengang Angewandte Informatik TIAI1004: Programmierung Dozent: Olaf Herden Stand: 01/2008 011110111000...0 Vorzeichen: + Exponent: 11110111 – Kv = 11110111 (2) – 01111111(2) = 01111000(2) = 120(10) Mantisse: 0...0 Insgesamt: 1,0 * 2120 = 2120 ≈ 1,32922 * 1036 000000001110...0 Vorzeichen: + Exponent: 00000001 – Kv = 00000001 (2) – 01111111(2) = 101111110(2) = -126(10) Mantisse: 110...0 Insgesamt: 1,11 * 2-126 = 1,75 * 2-126 ≈ 2,057115 * 10-38 Aufgabe 6 Überlegen Sie sich, an welchen Stellen der von Neumann-Architektur Engpässe auftreten können und wie diese behoben werden können! Engpass bei Computern mit einer von Neumann-Architektur besteht beim Datenaustausch zwischen dem Prozessor (bzw. dem Rechenwerk) und dem Arbeitsspeicher. In einem von Neumann-Rechner sind diese beiden Komponenten sowie der Bus zwischen ihnen jeweils nur einmal vorhanden. Dies führt dazu, dass alle Befehle nur nacheinander abgearbeitet werden und auch alle Speicherzugriffe nur einzeln und der Reihe nach geschehen. Hinzu kommt, dass es für die Hardware keinen Unterschied zwischen Daten und Programmen gibt, sodass ein einziger Befehl mehrere Speicherzugriffe erfordern kann. Der Bus zwischen Prozessor und Arbeitsspeicher wird so zum von Neumann-Flaschenhals. Berufsakademie Stuttgart/Horb Studiengang Angewandte Informatik TIAI1004: Programmierung Dozent: Olaf Herden Stand: 01/2008 Aufgabe 7 Füllen Sie die folgende Tabelle aus, indem Sie zuerst die Spalte „Erwartet“ durch Rechnen auf Papier ausfüllen und dann die Spalte „Java“ ausfüllen, indem Sie die Ausdrücke in einem Java-Programm implementieren und ausgeben lassen! Ausdruck Erwartet Java K4 K4 27 ⋅2 ⋅3 27 − 30 + 10 − 27 ⋅2 ⋅3 27 14 14 − 20 − 20 K4 K4 − 30 + 10 − 27 ⋅2 ⋅3 27 + 27 ⋅2 ⋅3 27 14 14 − 20 − 20 K4 2710 − 30 + 10 − 27 ⋅2 ⋅3 27 14 − 20 2.05... ⋅1014 2710 − 30 + 10 − 2710 − 20 − 20.0 K4 27 ⋅2 ⋅3 27 − 30 + 10 − 2710 14 14 − 20 − 2.05... ⋅10 10 10 10 10 10 10 100000⋅100000 / 100000 100000 14100 100000 / 100000 ⋅100000 100000 100000