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".