Aufgabenbeispiele von Informatik

Durch Aktualisieren des Browsers (z.B. mit Taste F5) kann man neue Beispielaufgaben sehen


Binär und Dezimal aus Hexdezimal

Beispiel:

Gib die Zahl (128)16 sowohl im Dezimal- als auch im Binärsystem an.

Lösung einblenden

Als Binärzahl

Jede Ziffer im Hexadezimalsystem kann in einen 4-er-Block im Binärsystem umgewandelt werden. Dazu zerlegen wir den Wert einfach als Summe der 2-er-Potenzen 8,4,2 und 1:

(1)16 = 1 = 1 = 1⋅1 = (1)2

(2)16 = 2 = 2 = 0⋅8 + 0⋅4 + 1⋅2 + 0⋅1 = (0010)2

(8)16 = 8 = 8 = 1⋅8 + 0⋅4 + 0⋅2 + 0⋅1 = (1000)2

Diese binären 4-er-Blöcke können dann einfach hintereinander gesetzt werden.

Somit ergibt sich die Binärdarstellung von (128)16 = (1.0010.1000)2

Als Dezimalzahl

20 = 1
21 = 2
22 = 4
23 = 8
24 = 16
25 = 32
26 = 64
27 = 128
28 = 256
29 = 512
...

Um die (für uns normale) Dezimalzahl zu berechnen, müssen wir einfach jede Ziffer mit der zugehörigen 2er-Potenz ihrer Stelle (siehe rechts) multiplizieren. Am besten tun wir das von rechts nach links:

(1.0010.1000)2 = 0⋅1 + 0⋅2 + 0⋅4 + 1⋅8 + 0⋅16 + 1⋅32 + 0⋅64 + 0⋅128 + 1⋅256= 296

Somit ergibt sich die Dezimaldarstellung von (1.0010.1000)2 = 296

endliche binäre Komma-Zahl

Beispiel:

Gib die Zahl 5,1640625 als binäre Kommazahl an.

Lösung einblenden

Wir zerlegen die Zahl 5,1640625 in ihre ganze Zahl (Interger) und ihren Rest als Kommazahl,
also 5,1640625 = 5 + 0,1640625

Jetzt wandeln wir ersmal die ganze Integer-Zahl 5 in eine Binärzahl um:

20 = 1
21 = 2
22 = 4
23 = 8
24 = 16
25 = 32
26 = 64
27 = 128
28 = 256
29 = 512
...

Zuerst versuchen wir Schritt für Schritt die Zahl 5 als Summe von 2er-Potenzen (siehe rechts) zu schreiben:

5 = 4 + 1

= 1⋅4 + 0⋅2 + 1⋅1

Somit ergibt sich die Binärdarstellung von 5 = (101)2

Es hätte auch einen schnelleren Weg gegeben um die Binärdarstellung der ganzen Zahl 5 zu bestimmen:

Wir gehen nach dem folgendem Algorithmus vor, dass die Kommazahl immer halbiert und dann auf den Rest geschaut wird. Dieser Rest wird dann in die entsprechende Binärstelle geschrieben.

5 -> 5:2 = 2 Rest 1, also kommt nun an die 20-Stelle eine 1.

5 = 2⋅2 + 1, also 5 = ( 2⋅2 + 1)⋅1 = 2⋅2 + 1⋅1

2 -> 2:2 = 1 Rest 0, also kommt nun an die 21-Stelle eine 0.

2 = 1⋅2 + 0, also 5 = ( 1⋅2 + 0)⋅2 + 1⋅1 = 1⋅4 + 0⋅2 + 1⋅1

1 -> 1:2 = 0 Rest 1, also kommt nun an die 22-Stelle eine 1.

1 = 0⋅2 + 1, also 5 = ( 0⋅2 + 1)⋅4 + 0⋅2 + 1⋅1 = 0⋅8 + 1⋅4 + 0⋅2 + 1⋅1

So erhalten wir die Binärdarstellung von 5 = (101)2

Jetzt müssenn wir noch die Nachkommastellen 0,1640625 in eine binäre Kommazahl umwandeln:

Wir gehen nach dem folgendem Algorithmus vor, dass die Kommazahl immer verdoppelt wird.
Wenn dann das Ergebnis der Verdopplung > 1 ist, kommt eine 1 an die Binärstelle, ansonsten eine 0.

0.1640625 -> 0.1640625⋅2 = 0.328125, da 0.328125<1 ist, kommt nun an die 2-1-Stelle eine 0

0.1640625⋅ 1 1 = 0.328125⋅ 1 2 , also ist 0.1640625 = 0⋅ 1 2 + 0.328125⋅ 1 2

0.328125 -> 0.328125⋅2 = 0.65625, da 0.65625<1 ist, kommt nun an die 2-2-Stelle eine 0

0.328125⋅ 1 2 = 0.65625⋅ 1 4 , also ist 0.1640625 = 0⋅ 1 2 + 0⋅ 1 4 + 0.65625⋅ 1 4

0.65625 -> 0.65625⋅2 = 1.3125, da 1.3125>1 ist, kommt nun an die 2-3-Stelle eine 1

0.65625⋅ 1 4 = 1.3125⋅ 1 8 , also ist 0.1640625 = 0⋅ 1 2 + 0⋅ 1 4 + 1⋅ 1 8 + 0.3125⋅ 1 8

0.3125 -> 0.3125⋅2 = 0.625, da 0.625<1 ist, kommt nun an die 2-4-Stelle eine 0

0.3125⋅ 1 8 = 0.625⋅ 1 16 , also ist 0.1640625 = 0⋅ 1 2 + 0⋅ 1 4 + 1⋅ 1 8 + 0⋅ 1 16 + 0.625⋅ 1 16

0.625 -> 0.625⋅2 = 1.25, da 1.25>1 ist, kommt nun an die 2-5-Stelle eine 1

0.625⋅ 1 16 = 1.25⋅ 1 32 , also ist 0.1640625 = 0⋅ 1 2 + 0⋅ 1 4 + 1⋅ 1 8 + 0⋅ 1 16 + 1⋅ 1 32 + 0.25⋅ 1 32

0.25 -> 0.25⋅2 = 0.5, da 0.5<1 ist, kommt nun an die 2-6-Stelle eine 0

0.25⋅ 1 32 = 0.5⋅ 1 64 , also ist 0.1640625 = 0⋅ 1 2 + 0⋅ 1 4 + 1⋅ 1 8 + 0⋅ 1 16 + 1⋅ 1 32 + 0⋅ 1 64 + 0.5⋅ 1 64

0.5 -> 0.5⋅2 = 1, da 1>1 ist, kommt nun an die 2-7-Stelle eine 1

0.5⋅ 1 64 = 1⋅ 1 128 , also ist 0.1640625 = 0⋅ 1 2 + 0⋅ 1 4 + 1⋅ 1 8 + 0⋅ 1 16 + 1⋅ 1 32 + 0⋅ 1 64 + 1⋅ 1 128 + 0⋅ 1 128

Die Binärdarstellung von 0.1640625 ist somit 0,0010101

Zusammen mit der 5 = (101)2 von oben ergibt sich somit die binäre Kommazahl 5,1640625 = (101,0010.101)2

endliche binäre Komma-Zahl 32Bit

Beispiel:

Gib die Zahl 3,1484375 als binäre 32-Bit Kommazahl an.

Lösung einblenden

Wir zerlegen die Zahl 3,1484375 in ihre ganze Zahl (Interger) und ihren Rest als Kommazahl,
also 3,1484375 = 3 + 0,1484375

Jetzt wandeln wir ersmal die ganze Integer-Zahl 3 in eine Binärzahl um:

20 = 1
21 = 2
22 = 4
23 = 8
24 = 16
25 = 32
26 = 64
27 = 128
28 = 256
29 = 512
...

Zuerst versuchen wir Schritt für Schritt die Zahl 3 als Summe von 2er-Potenzen (siehe rechts) zu schreiben:

3 = 2 + 1

= 1⋅2 + 1⋅1

Somit ergibt sich die Binärdarstellung von 3 = (11)2

Es hätte auch einen schnelleren Weg gegeben um die Binärdarstellung der ganzen Zahl 3 zu bestimmen:

Wir gehen nach dem folgendem Algorithmus vor, dass die Kommazahl immer halbiert und dann auf den Rest geschaut wird. Dieser Rest wird dann in die entsprechende Binärstelle geschrieben.

3 -> 3:2 = 1 Rest 1, also kommt nun an die 20-Stelle eine 1.

3 = 1⋅2 + 1, also 3 = ( 1⋅2 + 1)⋅1 = 1⋅2 + 1⋅1

1 -> 1:2 = 0 Rest 1, also kommt nun an die 21-Stelle eine 1.

1 = 0⋅2 + 1, also 3 = ( 0⋅2 + 1)⋅2 + 1⋅1 = 0⋅4 + 1⋅2 + 1⋅1

So erhalten wir die Binärdarstellung von 3 = (11)2

Jetzt müssenn wir noch die Nachkommastellen 0,1484375 in eine binäre Kommazahl umwandeln:

Wir gehen nach dem folgendem Algorithmus vor, dass die Kommazahl immer verdoppelt wird.
Wenn dann das Ergebnis der Verdopplung > 1 ist, kommt eine 1 an die Binärstelle, ansonsten eine 0.

0.1484375 -> 0.1484375⋅2 = 0.296875, da 0.296875<1 ist, kommt nun an die 2-1-Stelle eine 0

0.1484375⋅ 1 1 = 0.296875⋅ 1 2 , also ist 0.1484375 = 0⋅ 1 2 + 0.296875⋅ 1 2

0.296875 -> 0.296875⋅2 = 0.59375, da 0.59375<1 ist, kommt nun an die 2-2-Stelle eine 0

0.296875⋅ 1 2 = 0.59375⋅ 1 4 , also ist 0.1484375 = 0⋅ 1 2 + 0⋅ 1 4 + 0.59375⋅ 1 4

0.59375 -> 0.59375⋅2 = 1.1875, da 1.1875>1 ist, kommt nun an die 2-3-Stelle eine 1

0.59375⋅ 1 4 = 1.1875⋅ 1 8 , also ist 0.1484375 = 0⋅ 1 2 + 0⋅ 1 4 + 1⋅ 1 8 + 0.1875⋅ 1 8

0.1875 -> 0.1875⋅2 = 0.375, da 0.375<1 ist, kommt nun an die 2-4-Stelle eine 0

0.1875⋅ 1 8 = 0.375⋅ 1 16 , also ist 0.1484375 = 0⋅ 1 2 + 0⋅ 1 4 + 1⋅ 1 8 + 0⋅ 1 16 + 0.375⋅ 1 16

0.375 -> 0.375⋅2 = 0.75, da 0.75<1 ist, kommt nun an die 2-5-Stelle eine 0

0.375⋅ 1 16 = 0.75⋅ 1 32 , also ist 0.1484375 = 0⋅ 1 2 + 0⋅ 1 4 + 1⋅ 1 8 + 0⋅ 1 16 + 0⋅ 1 32 + 0.75⋅ 1 32

0.75 -> 0.75⋅2 = 1.5, da 1.5>1 ist, kommt nun an die 2-6-Stelle eine 1

0.75⋅ 1 32 = 1.5⋅ 1 64 , also ist 0.1484375 = 0⋅ 1 2 + 0⋅ 1 4 + 1⋅ 1 8 + 0⋅ 1 16 + 0⋅ 1 32 + 1⋅ 1 64 + 0.5⋅ 1 64

0.5 -> 0.5⋅2 = 1, da 1>1 ist, kommt nun an die 2-7-Stelle eine 1

0.5⋅ 1 64 = 1⋅ 1 128 , also ist 0.1484375 = 0⋅ 1 2 + 0⋅ 1 4 + 1⋅ 1 8 + 0⋅ 1 16 + 0⋅ 1 32 + 1⋅ 1 64 + 1⋅ 1 128 + 0⋅ 1 128

Die Binärdarstellung von 0.1484375 ist somit 0,0010011

Zusammen mit der 3 = (11)2 von oben ergibt sich somit die binäre Kommazahl 3,1484375 = (11,0010.011)2

Darstellung als 32-Bit Kommazahl:

(11,0010.011)2 = (1,1001.0011)2 ⋅ 21 (Normierte Darstellung)

Eigentlich müsste man die letzte Binärstelle runden, aber der Einfachheit wegen schneiden wir einfach nur ab!

Das Vorzeichen-Bit ist 0, da 3.1484375 positiv ist.

Wegen der ⋅ 21 ist der Exponent ist 1 + 127 (Exzess) = 128, oder eben (1000.0000)2.

Als Mantisse können wir einfach die Bits der normierten Darstellung abschreiben, wobei wir das erste Bit weglassen, da dieses bei der normierten Darstellung ja immer eine 1 ist (hidden bit). Somit erhalten wir:

0 10000000 100.1001.1000.0000.0000.0000

unendliche binäre Komma-Zahl

Beispiel:

Gib die Zahl 7,15 als binäre 32-Bit Kommazahl an.

Lösung einblenden

Wir zerlegen die Zahl 7,15 in ihre ganze Zahl (Interger) und ihren Rest als Kommazahl,
also 7,15 = 7 + 0,15

Jetzt wandeln wir ersmal die ganze Integer-Zahl 7 in eine Binärzahl um:

20 = 1
21 = 2
22 = 4
23 = 8
24 = 16
25 = 32
26 = 64
27 = 128
28 = 256
29 = 512
...

Zuerst versuchen wir Schritt für Schritt die Zahl 7 als Summe von 2er-Potenzen (siehe rechts) zu schreiben:

7 = 4 + 3
= 4 + 2 + 1

= 1⋅4 + 1⋅2 + 1⋅1

Somit ergibt sich die Binärdarstellung von 7 = (111)2

Es hätte auch einen schnelleren Weg gegeben um die Binärdarstellung der ganzen Zahl 7 zu bestimmen:

Wir gehen nach dem folgendem Algorithmus vor, dass die Kommazahl immer halbiert und dann auf den Rest geschaut wird. Dieser Rest wird dann in die entsprechende Binärstelle geschrieben.

7 -> 7:2 = 3 Rest 1, also kommt nun an die 20-Stelle eine 1.

7 = 3⋅2 + 1, also 7 = ( 3⋅2 + 1)⋅1 = 3⋅2 + 1⋅1

3 -> 3:2 = 1 Rest 1, also kommt nun an die 21-Stelle eine 1.

3 = 1⋅2 + 1, also 7 = ( 1⋅2 + 1)⋅2 + 1⋅1 = 1⋅4 + 1⋅2 + 1⋅1

1 -> 1:2 = 0 Rest 1, also kommt nun an die 22-Stelle eine 1.

1 = 0⋅2 + 1, also 7 = ( 0⋅2 + 1)⋅4 + 1⋅2 + 1⋅1 = 0⋅8 + 1⋅4 + 1⋅2 + 1⋅1

So erhalten wir die Binärdarstellung von 7 = (111)2

Jetzt müssenn wir noch die Nachkommastellen 0,15 in eine binäre Kommazahl umwandeln:

Wir gehen nach dem folgendem Algorithmus vor, dass die Kommazahl immer verdoppelt wird.
Wenn dann das Ergebnis der Verdopplung > 1 ist, kommt eine 1 an die Binärstelle, ansonsten eine 0.

0.15 -> 0.15⋅2 = 0.3, da 0.3<1 ist, kommt nun an die 2-1-Stelle eine 0

0.15⋅ 1 1 = 0.3⋅ 1 2 , also ist 0.15 = 0⋅ 1 2 + 0.3⋅ 1 2

0.3 -> 0.3⋅2 = 0.6, da 0.6<1 ist, kommt nun an die 2-2-Stelle eine 0

0.3⋅ 1 2 = 0.6⋅ 1 4 , also ist 0.15 = 0⋅ 1 2 + 0⋅ 1 4 + 0.6⋅ 1 4

0.6 -> 0.6⋅2 = 1.2, da 1.2>1 ist, kommt nun an die 2-3-Stelle eine 1

0.6⋅ 1 4 = 1.2⋅ 1 8 , also ist 0.15 = 0⋅ 1 2 + 0⋅ 1 4 + 1⋅ 1 8 + 0.2⋅ 1 8

0.2 -> 0.2⋅2 = 0.4, da 0.4<1 ist, kommt nun an die 2-4-Stelle eine 0

0.2⋅ 1 8 = 0.4⋅ 1 16 , also ist 0.15 = 0⋅ 1 2 + 0⋅ 1 4 + 1⋅ 1 8 + 0⋅ 1 16 + 0.4⋅ 1 16

0.4 -> 0.4⋅2 = 0.8, da 0.8<1 ist, kommt nun an die 2-5-Stelle eine 0

0.4⋅ 1 16 = 0.8⋅ 1 32 , also ist 0.15 = 0⋅ 1 2 + 0⋅ 1 4 + 1⋅ 1 8 + 0⋅ 1 16 + 0⋅ 1 32 + 0.8⋅ 1 32

0.8 -> 0.8⋅2 = 1.6, da 1.6>1 ist, kommt nun an die 2-6-Stelle eine 1

0.8⋅ 1 32 = 1.6⋅ 1 64 , also ist 0.15 = 0⋅ 1 2 + 0⋅ 1 4 + 1⋅ 1 8 + 0⋅ 1 16 + 0⋅ 1 32 + 1⋅ 1 64 + 0.6⋅ 1 64

0.6 -> 0.6⋅2 = 1.2, da 1.2>1 ist, kommt nun an die 2-7-Stelle eine 1

0.6⋅ 1 64 = 1.2⋅ 1 128 , also ist 0.15 = 0⋅ 1 2 + 0⋅ 1 4 + 1⋅ 1 8 + 0⋅ 1 16 + 0⋅ 1 32 + 1⋅ 1 64 + 1⋅ 1 128 + 0.2⋅ 1 128

0.2 -> 0.2⋅2 = 0.4, da 0.4<1 ist, kommt nun an die 2-8-Stelle eine 0

0.2⋅ 1 128 = 0.4⋅ 1 256 , also ist 0.15 = 0⋅ 1 2 + 0⋅ 1 4 + 1⋅ 1 8 + 0⋅ 1 16 + 0⋅ 1 32 + 1⋅ 1 64 + 1⋅ 1 128 + 0⋅ 1 256 + 0.4⋅ 1 256

0.4 -> 0.4⋅2 = 0.8, da 0.8<1 ist, kommt nun an die 2-9-Stelle eine 0

0.4⋅ 1 256 = 0.8⋅ 1 512 , also ist 0.15 = 0⋅ 1 2 + 0⋅ 1 4 + 1⋅ 1 8 + 0⋅ 1 16 + 0⋅ 1 32 + 1⋅ 1 64 + 1⋅ 1 128 + 0⋅ 1 256 + 0⋅ 1 512 + 0.8⋅ 1 512

Die 0.4 (und dann 0.4⋅2 = 0.8) hatten wir aber schon, d.h. die binäre Kommazahl ist periodisch und beginnt jetzt wieder von vorne. Also sind ab hier immer die nächsten 4 Zahlen wieder 0.4, 0.8, 0.6 und 0.2 mit den Binärzahlen 0110.

Die Binärdarstellung von 0.15 ist somit (0,0010.0110.0110.0110.0110.0110.0110.011)2

Zusammen mit der 7 = (111)2 von oben ergibt sich somit die binäre Kommazahl 7,15 = (111,0010.0110.0110.0110.0110.0110.0110.0)2

Darstellung als 32-Bit Kommazahl:

(111,0010.0110.0110.0110.0110.0110.0110.0)2 = (1,1100.1001.1001.1001.1001.1001.1001.100)2 ⋅ 22 (Normierte Darstellung)

Eigentlich müsste man die letzte Binärstelle runden, aber der Einfachheit wegen schneiden wir einfach nur ab!

Das Vorzeichen-Bit ist 0, da 7.15 positiv ist.

Wegen der ⋅ 22 ist der Exponent ist 2 + 127 (Exzess) = 129, oder eben (1000.0001)2.

Als Mantisse können wir einfach die Bits der normierten Darstellung abschreiben, wobei wir das erste Bit weglassen, da dieses bei der normierten Darstellung ja immer eine 1 ist (hidden bit). Somit erhalten wir:

0 10000001 110.0100.1100.1100.1100.1100

Binäres Addieren

Beispiel:

Berechne ohne die Binärzahlen in Dezimalzahlen umzuwandeln:

               ( 1111.1100)2
             + ( 1101.1000)2

Lösung einblenden

Wir schreiben die beiden Binärzahlen untereinander und gehen wie beim schriftlichen Addieren von Dezimalzahlen vor:

               ( 1111.1100)2
             + ( 1101.1000)2
               1 1111    
              (1 1101 0100)2

negative Binärzahlen

Beispiel:

Gegeben ist die 8-Bit-Binärzahl (0110.1011)2 = 107.

Bestimme -107 als 8-Bit-Binärzahl (in der Zweierkomplement-Darstellung):

Lösung einblenden

Wir invertieren im ersten Schritt unsere Binärzahl (d.h. aus jeder 0 wird eine 1 und aus jeder 1 wird eine 0).

so wird (0110.1011)2
zu (1001.0100)2

Jetzt müssen wir nur noch die binäre 1 auf diese invertierte Zahl draufaddieren:

               ( 1001.0100)2
             + ( 0000.0001)2
                         
               ( 1001 0101)2

Binäres Subtrahieren

Beispiel:

Berechne ohne die Binärzahlen in Dezimalzahlen umzuwandeln:

               ( 0111.0011)2
             - ( 0101.1101)2

Lösung einblenden

Wir wandeln erst den Subtrahend b, also die untere Zahl, die angezogen wird, in ihre negative Zahl um, so dass wir dann einfach die beiden Zahlen addieren können (a-b = a+(-b).

Wir invertieren im ersten Schritt unsere Binärzahl (d.h. aus jeder 0 wird eine 1 und aus jeder 1 wird eine 0).

so wird (0101.1101)2
zu (1010.0010)2

Jetzt müssen wir nur noch die binäre 1 auf diese invertierte Zahl draufaddieren:

               ( 1010.0010)2
             + ( 0000.0001)2
                         
               ( 1010 0011)2

Jetzt können wir einfach a=(0111.0011)2 und -b = (1010.0011)2 addieren:

               ( 0111.0011)2
             + ( 1010.0011)2
               1 11    11
              (1 0001 0110)2

Da wir ja aber nur 8-Bit Speicherplatz haben "verpufft der Overflow" und als Ergebnis stehen nur die 8 rechten Bit:

(0001.0110)2

Binäres Multiplizieren

Beispiel:

Berechne ohne die Binärzahlen in Dezimalzahlen umzuwandeln:

(111.1011)2 ⋅ (100.0100)2 =

Lösung einblenden

Der zweite Faktor (100.0100)2 lässt sich als Summe von reinen 2-er-Potenzen schreiben:

                      (100)2
              +  (100.0000)2
                 (100 0100)2

somit gilt:

(111.1011)2 ⋅ (100.0100)2 = 111.1011 ⋅ (100.0000 + 100)

Das Multiplizieren mit einer 2-er-Potenz bedeutet aber ja, dass man einfach die entsprechende Anzahl an Nullen hintenanhängt, somit gilt:

(111.1011)2 ⋅ (100.0100)2 = (1.1110.1100.0000)2 + (1.1110.1100)2

Diese 2 Summanden können wir nun schrittweise addieren:

              (1.1110.1100)2
       + (1.1110.1100.0000)2
         11 1111 1       
        (10 0000 1010 1100)2

Das Ergebnis ist somit: (10.0000.1010.1100)2

(Zum Vergleich in Dezimalzahlen: 123 ⋅ 68 = 8364)

Binäres Dividieren

Beispiel:

Berechne ohne die Binärzahlen in Dezimalzahlen umzuwandeln:

(11.0001)2 : (111)2 =

Lösung einblenden
110001 : 111 = 111          
- 111                        
1010                       
- 111                       
0111                      
- 111                      
000                      
  • Die obige Differenz (1100)2 - (111)2 = (101)2 kann man entweder mit binärer Subtraktion berechnen oder - oft schneller - durch Umrechnen in Dezimalzahlen: 12 - 7 = 5
  • Die obige Differenz (1010)2 - (111)2 = (11)2 kann man entweder mit binärer Subtraktion berechnen oder - oft schneller - durch Umrechnen in Dezimalzahlen: 10 - 7 = 3
  • Die obige Differenz (0111)2 - (111)2 = (0)2 kann man entweder mit binärer Subtraktion berechnen oder - oft schneller - durch Umrechnen in Dezimalzahlen: 7 - 7 = 0

(Zum Vergleich in Dezimalzahlen: 49 : 7 = 7)