Mag. Christian Gürtler Programmierung Grundlagen der Informatik 2011 Inhaltsverzeichnis I. Allgemeines 1. Zahlensysteme 1.1. ganze Zahlen . . . . . 1.1.1. Umrechnungen 1.2. gebrochene Zahlen . . 1.3. negative Zahlen . . . . 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 5 7 8 Teil I. Allgemeines 3 1 Zahlensysteme Das Dezimalsystem mit der Basis 10 ist nur für den Menschen interessant, in der Informatik spielen aber andere Zahlensysteme eine Rolle. • Dualsystem (Binärsystem): Basis 2, daher gibt es nur 2 Zustände (2 Bits, 0 und 1) • Oktalsystem: Basis 8; zur besseren Übersicht sind je 3 Bit zusammengefasst. Hier werden die Ziffern 0 bis 7 (in Summe 8 Ziffern) verwendet. • Hexadezimalsystem: Basis 16; 4 Bit sind zusammengefasst 1.1. ganze Zahlen Beispiel einer Umrechnung einer Dezimalzahl in die jeweiligen Zahlensysteme. Dabei wird jeweils ganzzahlig dividiert: • Dualsystem: 1210 soll umgerechnet werden. (12 bedeutet ja 2 ∗ 100 + 1 ∗ 101 . 345 bedeutet beispielsweise 3 ∗ 102 + 4 ∗ 101 + 5 ∗ 100 ): Rest ganzzahlig 12 6 3 1 : : : : 2 2 2 2 = = = = 6 3 1 0 0 0 1 1 Tabelle 1.1.: Dualsystem Die Ziffern des ganzzahligen Rests ergeben die Binärzahl (1100), wobei die unterste Ziffer an die linke Stelle geschrieben wird. Die Kontrolle sieht so aus: 1100 = 0 ∗ 20 + 0 ∗ 21 + 1 ∗ 22 + 1 ∗ 23 . • Oktalsystem: Es soll wieder die 1210 ins Oktalsystem umgerechnet werden, wobei jetzt die Basis 8 gilt. 4 1. Zahlensysteme 1.1. ganze Zahlen Rest ganzzahlig 12 1 :8= :8= 1 0 4 1 Tabelle 1.2.: Oktalsystem Also ist 1210 umgerechnet 148 . Die Kontrolle wieder wie vorher: 148 = 1 ∗ 81 + 4 ∗ 80 . Dies Oktalzahl kann auch durch Zusammenfassen 3er Bits aus einer Binärzahl errechnet werden. 1210 ist ja binär 1100; wenn die rechten 3 Bit zusammengefasst werden ergibt das 4 (100), mit der linken 1 ergibt sich 14. • Hexadezimalsystem: Hier wird die Basis 16 verwendet, oder bei einer Binärzahl werden jeweils 4 Bit zusammengefasst. Hier werden die Ziffern 0 bis 9 verwendet, für 10 bis 15 werden Buchstaben eingesetzt (A für 10, B für 11 usw.). Es soll wieder die 1210 ins Hexadezimalsystem umgerechnet werden, wobei jetzt die Basis 16 gilt. Rest ganzzahlig 12 : 16 = 0 12 C Tabelle 1.3.: Oktalsystem Hier wird ersichtlich, warum 1216 nicht 12 sondern C ist, weil 1216 = 1∗161 +2∗160 = 1810 . • Übung: Wandle folgende Zahlen um: – 25510 ins Binärsystem – 25510 ins Hexadezimalsystem – 4505410 ins Hexadezimalsystem – ABBA16 ins Oktalsystem 1.1.1. Umrechnungen • Umrechnen einer Binärzahl in die Dezimalzahl 11002 ist von rechts nach links gelesen 0 · 20 + 0 · 21 + 1 · 22 + 1 · 23 also 1410 . 148 ist analog 4 · 80 + 1 · 81 als 1210 . • Umrechnen von Dezimal nach Oktal: – Variante 1: 5 1. Zahlensysteme 1.1. ganze Zahlen Rest ganzzahlig 255 31 3 :8= :8= :8= 31 3 0 7 7 3 Tabelle 1.4.: Oktalsystem – Variante 2 (umrechnen nach binär und dann 3er-Gruppen bilden, indem 3 Bit zusammengefasst werden. Warum 3? Weil 23 = 8) Rest ganzzahlig 255 127 63 31 15 7 3 1 : : : : : : : : 2 2 2 2 2 2 2 2 = = = = = = = = 127 63 31 15 7 3 1 0 1 1 1 1 1 1 1 1 Tabelle 1.5.: Binärsystem Es werden von rechts beginnend 3er-Gruppen gebildet und diese ausgerechnet. 11 111 111 ergibt 377. Erklärung: 11 =(1 · 20 + 1 · 21 ) = 3 111 =(1 · 20 + 1 · 21 + 1 · 22 ) = 7 111 =(1 · 20 + 1 · 21 + 1 · 22 ) = 7 • Umrechnen dezimal nach hexadezimal – Variante 1: (dividieren durch 16) Rest ganzzahlig 255 15 : 16 = : 16 = 15 0 15 15 F F Tabelle 1.6.: Hexadezimalsystem 6 1. Zahlensysteme 1.2. gebrochene Zahlen – Variante 2: umrechnen nach binär und dann 4er-Gruppen (24 = 16) bilden Rest ganzzahlig 255 127 63 31 15 7 3 1 : : : : : : : : 2 2 2 2 2 2 2 2 = = = = = = = = 127 63 31 15 7 3 1 0 1 1 1 1 1 1 1 1 Tabelle 1.7.: Binärsystem 1111 1111 ergibt FF 1111 =(1 · 20 + 1 · 21 + 1 · 22 + 1 · 23 ) = 15 1111 =(1 · 20 + 1 · 21 + 1 · 22 + 1 · 23 ) = 15 und weil 15 im Hexadezimalsystem F ist, ist 25510 FF16 • Umrechnen von Hexadezimal nach Dezimal ABBA16 10 · 160 + 11 · 161 + 11 · 162 + 10 · 163 = 43962 Gegenprobe: Rest ganzzahlig 43962 2747 171 10 : : : : 16 16 16 16 = = = = 2747 171 10 0 10 11 11 10 A B B A Tabelle 1.8.: Hexadezimalsystem 1.2. gebrochene Zahlen Das Umwandeln von gebrochenen Zahlen erfolgt folgendermaßen: Hier wird nicht durch 2 dividiert sondern mit 2 multipliziert und der Überlauf (Ziffer links vom Komma) ergibt die Binärzahl. Beispiel an Hand von 0.3437510 . 7 1. Zahlensysteme 1.3. negative Zahlen Überlauf 0.34375 · 2 = 0.6875 · 2 = 0.375 · 2 = 0.75 · 2 = 0.5 · 2 = 0·2= 0. 6875 1.375 0.75 1.5 1.0 0 0 1 0 1 1 0 Tabelle 1.9.: gebrochene Zahlen Also ergibt 0.3437510 umgerechnet 0.0101102 . Die Gegenprobe ergibt sich aus 0 · 2−1 + 1 · 2−2 + 0 · 2−3 + 1 · 2−4 + 1 · 2−5 Zahlen mit Vor- und Nachkommastellen müssen jeweils getrennt behandelt werden. Problematisch wird es bei gebrochenen Zahlen, die bei der Umrechnung unendlich weiterlaufen würden, wie hier am Beispiel 0.110 . Überlauf 0.1 · 2 = 0.2 0.2 · 2 = 0.4 0.4 · 2 = 0.8 0.8 · 2 = 1.6 0.6 · 2 = 1.2 0.2 · 2 = 0.4 .. . 0 0 0 1 1 0 .. . Tabelle 1.10.: gebrochene Zahlen Es hängt davon ab, wie viele Bits für Nachkommastellen bei der Umrechnung zur Verfügung stehen, generell ist aber ein Genauigkeitsverlust hinzunehmen. 1.3. negative Zahlen Für die Darstellung negativer Zahlen wird das sogenannte Zweierkomplement verwendet. Das erste Bit wird für das Vorzeichen verwendet, die restlichen Bits für die Zahl. Angenommen, es werden 4 Bit für die Darstellung verwendet, so ist die kleinste darstellbare Zahl −8 (errechnet aus −24−1 ), wobei die 4 für die Anzahl der Bits steht. Die größte Zahl ist 7 (errechnet aus 24−1 − 1). Wie erfolgt die Bildung des Zweierkomplements? ➀ ist erstes Bit eine 1, dann ist die Zahl negativ ➁ danach jedes Bit invertieren ➂ danach 1 addieren 8 1. Zahlensysteme 1.3. negative Zahlen Beispiel einer Zahl mit 4 Bit (−5) ➀ 5 ist 0101 ➁ invertiert: 1010 ➂ plus 1: 1011 Der Vorteil des Zweierkomplements liegt darin, dass ein Rechner keine Subtraktion beherrschen muss, er kann einfach mit negativen Zahlen addieren. Allerdings muss hier die korrekte Anzahl Bits verwendet werden, sonst kann es zu einem Pufferüberlauf kommen. Zum Beispiel ist −10 nicht mit 4 Bit darstellbar: 10 . . . 1010 0101 1 dazu 0110 . . . 6 allerdings mit 5 Bit 10 . . . 01010 10101 1 dazu 10110 Angenommen, es soll 2 − 4 ausgerechnet werden, so rechnet der Computer 2 + (−4). 2 . . . 0010 −4 . . . 1100 1110 Was ist nun 1110? Hier wird das Zweierkomplement retour durchgeführt: 1110 0001 invertiert 1 +1 0010 ...2 aber −2, da ja das erste Bit negativ war. 9 Index B Bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 P Pufferüberlauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Z Zahlensysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Binärsystem. . . . . . . . . . . . . . . . . . . . . . . . . .4 Dualsystem . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Hexadezimalsystem . . . . . . . . . . . . . . . . . . 4 Oktalsystem . . . . . . . . . . . . . . . . . . . . . . . . . 4 Zweierkomplement . . . . . . . . . . . . . . . . . . . . . . . 8 10