Programmierung

Werbung
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
Herunterladen