Sie sind auf Seite 1von 7

Übung zur Vorlesung Informatik 1 WS 2019/20

Fakultät für Angewandte Informatik


Lehrprofessur für Informatik
Prof. Dr. Lorenz, Marius Brendle, Johannes Metzger, Lisa Petrak 31.10.2019

Lösungsvorschlag zu Übungsblatt 2

Abgabe: Donnerstag 07.11.2019, 12:00 Uhr (Postkasten der Veranstaltung und E-Mail an
Tutor)
• Dieses Übungsblatt muss im Team abgegeben werden (Einzelabgaben sind nicht erlaubt!).

• Bitte zur Angabe von Namen, Übungsgruppe und Teamnummer das Deckblatt verwenden!
• Die Zeitangaben geben zur Orientierung an, wie viel Zeit für eine Aufgabe später in der
Klausur vorgesehen wäre; gehen Sie davon aus, dass Sie zum jetzigen Zeitpunkt wesentlich
länger brauchen und die angegebene Zeit erst nach ausreichender Übung erreichen.

* leichte Aufgabe / ** mittelschwere Aufgabe / *** schwere Aufgabe

Aufgabe 5 * (Umwandlung zwischen Zahlensystemen, 30 Minuten)

Befüllen Sie die leeren Zellen in folgender Tabelle.


Die Spaltennamen geben jeweils eine Basis B vor.

B = 10 B=2 B=8 B = 16 B=3 B=5


(79)10

(11010010)2

(27)8

(0.4)16

(0.1)3

(0.2)5

Geben Sie zu jedem Eintrag die zugehörige Rechnung an (wie in den Beispielen 3.10, 3.11, 3.15,
3.17, 3.24 und 3.25).
B = 10 B=2 B=8 B = 16 B=3 B=5
(79)10 (1001111)2 (117)8 (4F )16 (2221)3 (304)5

(210)10 (11010010)2 (322)8 (D2)16 (21210)3 (1320)5

(23)10 (10111)2 (27)8 (17)16 (212)3 (43)5

(0.25)10 (0.01)2 (0.2)8 (0.4)16 (0.02)3 (0.1)5

(0.3)10 (0.01)2 (0.25)8 (0.5)16 (0.1)3 (0.13)5

(0.4)10 (0.0110)2 (0.3146)8 (0.6)16 (0.1012)3 (0.2)5

• (79)10 = (1001111)2 :
79 mod 2 = 1, 79 ÷ 2 = 39
39 mod 2 = 1, 39 ÷ 2 = 19
19 mod 2 = 1, 19 ÷ 2 = 9
9 mod 2 = 1, 9 ÷ 2 = 4
4 mod 2 = 0, 4 ÷ 2 = 2
2 mod 2 = 0, 2 ÷ 2 = 1
1 mod 2 = 1, 1 ÷ 2 = 0
• (001001111)2 = (117)8

• (01001111)2 = (4F )16


(führende Nullen fallen weg)
• (79)10 = (2221)3 :
79 mod 3 = 1, 79 ÷ 3 = 26
26 mod 3 = 2, 26 ÷ 3 = 8
8 mod 3 = 2, 8 ÷ 3 = 2
2 mod 3 = 2, 2 ÷ 3 = 0
• (79)10 = (304)5 :
79 mod 5 = 4, 79 ÷ 5 = 15
15 mod 5 = 0, 15 ÷ 5 = 3
3 mod 5 = 3, 3 ÷ 5 = 0
• (11010010)2 = (210)10 :
(11010010)2 = 1 · 21 + 1 · 24 + 1 · 26 + 1 · 27
• (011010010)2 = (322)8
(führende Nullen fallen weg)

• (11010010)2 = (D2)16
• (210)10 = (21210)3 :
210 mod 3 = 0, 210 ÷ 3 = 70
70 mod 3 = 1, 70 ÷ 3 = 23
23 mod 3 = 2, 23 ÷ 3 = 7
7 mod 3 = 1, 7 ÷ 3 = 2
2 mod 3 = 2, 2 ÷ 3 = 0

2
• (210)10 = (1320)5 :
210 mod 5 = 0, 210 ÷ 5 = 42
42 mod 5 = 2, 42 ÷ 5 = 8
8 mod 5 = 3, 8 ÷ 5 = 1
1 mod 5 = 1, 1 ÷ 5 = 0
• (27)8 = (23)10 :
(27)8 = 7 · 80 + 2 · 81
• (010111)2 = (27)8
(führende Nullen fallen weg)
• (00010111)2 = (17)16
(führende Nullen fallen weg)
• (23)10 = (212)3 :
23 mod 3 = 2, 23 ÷ 3 = 7
7 mod 3 = 1, 7 ÷ 3 = 2
2 mod 3 = 2, 2 ÷ 3 = 0
• (23)10 = (43)5 :
23 mod 5 = 3, 23 ÷ 5 = 4
4 mod 5 = 4, 4 ÷ 5 = 0

• (0.4)16 = (0.25)10 :
(0.4)16 = 4 · 16−1
• (0.0100)2 = (0.4)16
(abschließende Nullen fallen weg)

• (0.010)2 = (0.2)8
(abschließende Nullen fallen weg)
• (0.25)10 = (0.02)3 :
b0.25 · 3c = 0, 0.25 · 3 − 0 = 0.75
b0.75 · 3c = 2, 0.75 · 3 − 2 = 0.25
(periodische Wiederholung)

• (0.25)10 = (0.1)5 :
b0.25 · 5c = 1, 0.25 · 5 − 1 = 0.25
(periodische Wiederholung)
• (0.1)3 = (0.3)10
1 · 3−1 = (0.3)10
• (0.3)10 = (0.01)2 :
b0.3 · 2c = 0, 0.3 · 2 − 0 = 0.6
b0.6 · 2c = 1, 0.6 · 2 − 1 = 0.3
(periodische Wiederholung)

• (0.01)2 = (0.010101)2 = (0.25)8


• (0.01)2 = (0.0101)2 = (0.5)16
• (0.3)10 = (0.13)5 :
b0.3 · 5c = 1, 0.3 · 5 − 1 = 0.6
b0.6 · 5c = 3, 0.6 · 5 − 3 = 0.3
(periodische Wiederholung)
• (0.2)5 = (0.4)10
2 · 5−1 = (0.4)10

3
• (0.4)10 = (0.0110)2 :
b0.4 · 2c = 0, 0.4 · 2 − 0 = 0.8
b0.8 · 2c = 1, 0.8 · 2 − 1 = 0.6
b0.6 · 2c = 1, 0.6 · 2 − 1 = 0.2
b0.2 · 2c = 0, 0.2 · 2 − 0 = 0.4
(periodische Wiederholung)
• (0.0110)2 = (0.011001100110)2 = (0.3146)8
• (0.0110)2 = (0.0110)2 = (0.6)16
• (0.4)10 = (0.1012)3 :
b0.4 · 3c = 1, 0.4 · 3 − 1 = 0.2
b0.2 · 3c = 0, 0.2 · 3 − 0 = 0.6
b0.6 · 3c = 1, 0.6 · 3 − 1 = 0.8
b0.8 · 3c = 2, 0.8 · 3 − 2 = 0.4
(periodische Wiederholung)

Aufgabe 6 (Rechnen in Zahlensystemen)

a) (*, Addieren, 10 Minuten) Führen Sie folgenden Additionen jeweils im Zahlensystem der
angegebenen Zahlen durch. Geben Sie dabei die zugehörigen Rechnung an (wie in Beispiel 3.12
und Folie 177).

1. (11100)2 + (101101)2
1 1 1 0 0
+ 1 0 1 1 0 1
Übertrag 1 1 1 1 0 0 0
Ergebnis 1 0 0 1 0 0 1
2. (54.5)8 + (4.75)8
5 4 . 5
+ 4 . 7 5
Übertrag 1 1 . 0 0
Ergebnis 6 1 . 4 5
3. (A0.B1)16 + (55.EE)16
A 0 . B 1
+ 5 5 . E E
Übertrag 0 1 . 0 0
Ergebnis F 6 . 9 F

b) (*, Subtrahieren, 10 Minuten) Führen Sie folgenden Subtraktionen jeweils im Zahlensystem


der angegebenen Zahlen durch. Geben Sie dabei die zugehörigen Rechnung an (wie in Beispiel
3.12 und Folie 177).

1. (A361)16 − (3F E)16


A 3 6 1
- 3 F E
Übertrag 1 1 1 0
Ergebnis 9 F 6 3
2. (101.011)2 − (11.1101)2
1 0 1 . 0 1 1
- 1 1 . 1 1 0 1
Übertrag 1 1 1 . 0 0 1 0
Ergebnis 0 1 . 1 0 0 1

4
3. (71.15)8 − (65.21)8
7 1 . 1 5
- 6 5 . 2 1
Übertrag 1 1 . 0 0
Ergebnis 3 . 7 4

c) (*, Multiplizieren / Dividieren, 4 Minuten) Führen Sie folgende Rechnungen im Zahlensystem


der angegebenen Zahlen durch.

1. (702)8 · 83
= (702000)8
2. (0.A007)16 · 162
= (A0.07)16
3. (1101)2 /22
= (11.01)2
4. (15.03)8 /84
= (0.001503)8

(Zahlen ohne Angabe eines Zahlensystems sind im Dezimalsystem notiert)

Aufgabe 7 (Normierte Gleitkommazahlen)

a) (*, Normierung, 4 Minuten) Geben Sie die folgenden Zahlen in normierter Gleitpunktdarstel-
lung an.

1. (A0100.0D1)16
= (A.01000D1)16 · 164
2. (0.000117)8
= (1.17)8 · 8−4
3. (1001.001)2
= (1.001001)2 · 23
4. (0.100001)2
= (1.00001)2 · 2−1

b) (*, Addition, 6 Minuten) Führen Sie folgenden Additionen jeweils im Zahlensystem der ange-
gebenen Zahlen durch. Geben Sie dabei die zugehörigen Rechnung an (wie in Beipiel 3.31).

1. ((3.4)8 · 81 ) + ((7.7)8 · 82 )
((3.4)8 · 81 ) + ((7.7)8 · 82 )
= (0.34 + 7.7)8 · 82
= (10.24)8 · 82
= (1.024)8 · 83
2. ((1.1)2 · 2−1 ) + ((1.11)2 · 21 )
((1.1)2 · 2−1 ) + ((1.11)2 · 21 )
= (0.011 + 1.11)2 · 21
= (10.001)2 · 21
= (1.0001)2 · 22

5
(Zahlen ohne Angabe eines Zahlensystems sind im Dezimalsystem notiert)

c) (*, Subtraktion, 6 Minuten) Führen Sie folgenden Subtraktionen jeweils im Zahlensystem der
angegebenen Zahlen durch. Geben Sie dabei die zugehörigen Rechnung an (wie in Beipiel 3.32).

1. ((1.9)16 · 161 ) − ((A.1)16 · 160 )


((1.9)16 · 161 ) − ((A.1)16 · 160 )
= (1.9 − 0.A1)16 · 161
= (0.EF )16 · 161
= (E.F )16 · 160
2. ((1.01)2 · 21 ) − ((1.1)2 · 20 )
((1.01)2 · 21 ) − ((1.1)2 · 20 )
= (1.01 − 0.11)2 · 21
= (0.10)2 · 21
= (1.0)2 · 20

(Zahlen ohne Angabe eines Zahlensystems sind im Dezimalsystem notiert)

d) (*, Multiplikation / Division, 8 Minuten) Führen Sie folgenden Rechnungen jeweils im Zah-
lensystem der angegebenen Zahlen durch. Geben Sie dabei die zugehörigen Rechnung an (wie in
Beipiel 3.33).

1. ((1.0)2 · 2−2 ) · ((1.1)2 · 21 )


((1.0)2 · 2−2 ) · ((1.1)2 · 21 )
= (1.1)2 · 2−1
2. ((4.0)8 · 8−1 ) · ((2.1)8 · 8−2 )
((4.0)8 · 8−1 ) · ((2.1)8 · 8−2 )
= (10.4)8 · 8−3
= (1.04)8 · 8−2

3. ((C.0)16 · 16−2 )/((4.0)16 · 161 )


((C.0)16 · 16−2 )/((4.0)16 · 161 )
= (3.0)16 · 16−3
4. ((1.1)2 · 22 )/((1.1)2 · 21 )
((1.1)2 · 22 )/((1.1)2 · 21 )
= (1.0)2 · 21

(Zahlen ohne Angabe eines Zahlensystems sind im Dezimalsystem notiert)

Aufgabe 8 (Programmieraufgaben zur Wiederholung des Vorkurses)

Erstellen Sie für jede Teilaufgabe jeweils eine C-Datei mit einer eigenen main-Funktion. Kom-
pilieren Sie Ihre Programme mit den Compilerschaltern -ansi -pedantic -Wall -Wextra und
führen Sie sie aus (jeweils über ein Kommandozeilen-Programm).

a) (**, 8 Minuten)
Schreiben Sie ein C-Programm, das eine ganze Zufallszahl zwischen 0 und 1000 (jeweils ein-
schließlich) berechnet und dann zeilenweise in aufsteigender Reihenfolge alle Teiler dieser Zahl
ausgibt.

6
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
int i, r;
srand(time(NULL));
r = rand() % 1001;
for (i = 1; i <= r/2; ++i) {
if (r % i == 0) {
printf("%i\n", i);
}
}
printf("%i\n", r);
return 0;
}

b) (*, 4 Minuten)
Schreiben Sie ein C-Programm, das in einer übersichtlichen Tabelle die Dezimal-, Oktal- und He-
xadezimaldarstellungen der ganzen Zahlen zwischen 0 und 1000 (jeweils einschließlich) ausgibt.

#include <stdio.h>

int main(void)
{
int i;
for (i = 0; i <= 1000; ++i) {
printf("%i\t %o\t %x\n", i, i, i);
}
return 0;
}

Das könnte Ihnen auch gefallen