PDF-Zahlensysteme

Transcrição

PDF-Zahlensysteme
Zahlensysteme
Übungsblatt für die entfallende Stunde am 22.10.2010.
Das 10er-System ........................................................................................................................ 1
Umrechnung in das 10er-System ............................................................................................... 2
2er-System.............................................................................................................................. 2
8er-System.............................................................................................................................. 2
16er-System............................................................................................................................ 3
Umrechnung in andere Zahlensysteme ...................................................................................... 3
Darstellung in C ......................................................................................................................... 4
verschiedene Zahlensysteme im Quelltext ............................................................................. 4
Ausgabe verschiedener Zahlensysteme mit printf.................................................................. 4
Übungsaufgaben......................................................................................................................... 5
Das 10er-System
Das uns geläufigste Zahlensystem ist das 10er-System. Ist zu einer Zahl nichts weiter
angegeben, handelt es sich um eine Zahl im 10er-System. Für den Menschen ist dieses
System naheliegend (10 Finger, 10 Zehen).
Für Zahlen des Zehnersystems gilt:
• es gibt 10 Ziffern: 0-9
• der größte, mit einer Ziffer darstellbare Wert beträgt 9
• Stellenwerte :
Der Wert der 1. Stelle beträgt 100 = 1 (die "Einer"-Stelle)
Der Wert der 2. Stelle beträgt 101 = 10 (die "Zehner"-Stelle)
Der Wert der 3. Stelle beträgt 102 = 100 (die "Hunderter"-Stelle)
Der Wert der 4. Stelle beträgt 103 = 1000 (die "Tausender"-Stelle)
usw.
Dadurch ergibt sich die Interpretation einer Zahl.
Beispiel:
123 = 3 * 100 + 2 * 101 + 1 * 102 = 3 + 20 + 100 = 123
Umrechnung in das 10er-System
Denkbar sind beliebige andere Zahlensysteme. Im Zusammenhang mit der Informatik werden
vor allem folgende Zahlensysteme verwendet: 2er (Einfachstes mögliches, "Binär-System"),
8er ("Oktal-System") und 16er ("Hexadezimal-System").
2er-System
Für Zahlen des Binär-Systems gilt:
• es gibt 2 Ziffern: 0 und 1
• der größte, mit einer Ziffer darstellbare Wert beträgt 1
• Stellenwerte :
Der Wert der 1. Stelle beträgt 20 = 1
Der Wert der 2. Stelle beträgt 21 = 2
Der Wert der 3. Stelle beträgt 22 = 4
Der Wert der 4. Stelle beträgt 23 = 8
usw.
Üblich ist die Kennzeichnung einer Zahl eines Systems ≠ 10 durch eine kleine, hinten
angestellte Zahl oder eines Buchstabens:
• 2 oder b für das Binärsystem
• 8 oder o für das Oktalsystem
• 16 oder h für das Hexadezimalsystem
Eine Zahl des Zehnersystems wird auch explizit durch eine 10 oder ein d (Dezimal-System)
gekennzeichnet.
Interpretationsbeispiel einer Binärzahl:
11012 = 1 * 1 + 0 * 2 + 1 * 4 + 1 * 8 = 1 + 4 + 8 = 1310
Anders ausgedrückt: Die binäre Zahl 1101 entspricht einem dezimalen Wert von 13.
8er-System
Für Zahlen des Oktal-Systems (8) gilt:
• es gibt 8 Ziffern: 0-7
• der größte, mit einer Ziffer darstellbare Wert beträgt 7
• Stellenwerte :
Der Wert der 1. Stelle beträgt 80 = 1
Der Wert der 2. Stelle beträgt 81 = 8
Der Wert der 3. Stelle beträgt 82 = 64
Der Wert der 4. Stelle beträgt 83 = 512
usw.
Beispiel:
1378 = 7 * 1 + 3 * 8 + 1 * 64 = 7 + 24 + 64 = 9510
Hier wird deutlich, dass Zahlen eines Zahlensystems unter 10 gleich viele oder mehr Stellen
benötigen (4 Ziffern statt 2 für die 13 im Binär-System bzw. 3 Ziffern statt 2 für die 95 im
Oktal-System). Umgekehrt verhält es sich bei Zahlen eines Zahlensystems über 10 (2 Ziffern
statt 3 für die 194 im Hexadezimal-System, siehe unten).
16er-System
Da uns nur 10 Ziffern zur Verfügung stehen, werden für die Darstellung der Zahlen eines
Systems > 10 Buchstaben hinzugenommen:
Für Zahlen des Hexadezimal-Systems (16) gilt:
• es gibt 16 Ziffern: 0-9, A-F ( A = 10, B = 11, C = 12, D = 13, E = 14, F = 15 )
• der größte, mit einer Ziffer darstellbare Wert beträgt 15
• Stellenwerte :
Der Wert der 1. Stelle beträgt 160 = 1
Der Wert der 2. Stelle beträgt 161 = 16
Der Wert der 3. Stelle beträgt 162 = 256
Der Wert der 4. Stelle beträgt 163 = 4096
usw.
Beispiel:
C216 = 2 * 1 + 12 * 16 = 2 + 192 = 19410
Umrechnung in andere Zahlensysteme
Für die Umrechnung von Zahlen des Dezimalsystems in beliebige andere Systeme gibt es
einen einfachen Weg: Die Division mit Rest.
• die entsprechende Zahl wird durch die Kennzahl des Ziel-Zahlensystems geteilt
• der ganzzahlige Anteil wird wiederum durch die gleiche Zahl geteilt, bis der ganze
Rest 0 beträgt
• die Divisions-Reste bilden in umgekehrter Reihenfolge abgelesen die Zahl im
Zielsystem
Beispiel: Umrechnung von 58 ins Binär-System:
58 / 2 = 29 R 0
29 / 2 = 14 R 1
14 / 2 = 7 R 0
7/2=3R1
3/2=1R1
1/2=0R1
Liest man die Reste von unten nach oben ergibt sich: 1110102.
Beispiel: Umrechnung von 1234 ins Hexadezimal-System:
1234 / 16 = 77 R 2
77 / 16 = 4 R 13 (= D)
4 / 16 = 0 R 4
Liest man die Reste von unten nach oben ergibt sich: 4D216.
Darstellung in C
verschiedene Zahlensysteme im Quelltext
In der Sprache C können Zahlen aus dem 10er, 8er und 16er-System im Quelltext stehen. Ist
nichts angegeben, handelt es sich immer um eine Zahl im 10er-System. Für andere
Zahlensysteme werden Prefixe den Zahlen vorangestellt: Eine Oktal-Zahl beginnt mit 0, eine
Hexadezimale Zahl mit 0x. Binärzahlen können leider nicht direkt als Quelltext geschrieben
werden.
Beispielsweise bewirkt jede der folgenden 3 Zeilen die Ausgabe von 15 (alternativ könnte
hier auch %i oder %u als Platzhalter verwendet werden):
printf("%d", 15);
printf("%d", 0xF);
printf("%d", 017);
Ausgabe verschiedener Zahlensysteme mit printf
Folgende Platzhalter bewirken Ausgaben in unterschiedlichen Zahlensystemen:
printf("%d\n", 15);
printf("%o\n", 15);
printf("%x\n", 15);
// dezimale Ausgabe: 15
// oktale Ausgabe: 17
// hexadezimale Ausgabe: F
Auch Printf kennt leider keinen Platzhalter für die binäre Ausgabe.
Übungsaufgaben
1)
Wandeln Sie die Binärzahl 111001101 ins Dezimalsystem.
2)
Wandeln Sie die Dezimalzahl 42 in eine Binärzahl
3)
Wandeln Sie die Zahlen 0x123, 0xAFFE Dezimalsystem.
Das führende "0x" kennzeichnet Hezadezimalzahlen
4)
Wandeln Sie die (dezimal-)Zahl 3735928559 ins Hexadezimale Format.
5)
Wandel Sie die Zahl 012345 ins Dezimalsystem.
Die führende 0 kennzeichnet eine Oktal-Zahl (8er-System)
6)
Stellen Sie sich selbst mindestens 3 weitere Aufgaben zur Umrechnung von
verschiedenen Zahlen aus dem 10er-System in andere Zahlensysteme, bzw. von
beliebigen Zahlensystemen in das Dezimalsystem.
7)
Schreiben Sie ein Programm zur Überprüfung Ihrer Lösungen der Übungsaufgaben 3
bis 6 mit Hilfe von printf. Die Lösungen von 1 und 2 können Sie z.B. mit dem
Windows-Taschenrechner überprüfen. Stellen Sie ihn zu diesem Zweck unter
"Ansicht" auf "Wissenschaftlich".