Großübung 1: Zahlensysteme Repräsentation von Daten: Binär-, Oktal- u. Hexadezimalcodierung von ganzen und rationalen Zahlen Lehrender: Dr. Klaus Richter, Institut für Informatik; E-Mail: [email protected] Inhalt der 1. Großübung: Æ Großübung zu Kapitel 2 und zu Teilen von Kapitel 3 der Vorlesung (stets mit Vorlesungsfolien vergleichen) Æ Kurzer Ausblick: Ganze Oktal-/Hexadezimalzahlen in Python Dr. K. Richter Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 1 1) Positionssysteme bei natürlichen Zahlen (0,1,2, ...) - Allgemein für Positionssysteme Ein Positionssystem mit der Basis B ist ein Zahlensystem, in dem eine Zahl x nach Potenzen von B zerlegt wird. Eine natürliche Zahl n wird durch folgende Summe dargestellt: Dr. K. Richter Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 2 1.1 Dezimalsystem (bekannt!) - Übliches Zahlensystem beim praktischen Rechnen (10 Finger) - Basis: B = 10 - Dezimalzahlen: Folgen der 10 Grundziffern 0, 1, 2, ... , 9 - Positionssystem (Stellenwertsystem): Stellung der Ziffer in Zahl entspricht Potenz von 10 (Stellenwert) - Beispiel: 870410 = 8*103 + 7*102 + 0*101 + 4*100 - Bekannt: Addition, Subtraktion, Multiplikation, Division im Dezimalsystem Dr. K. Richter 1.2 Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 3 Binärsystem (Dualsystem) - Dezimalsystem im Computer technisch schwer zu realisieren - Repräsentation von Daten in Computern durch zwei Zustände 0, 1 z.B.: Relais: 2 diskrete Zustände (geschlossen / offen) Halbleiter mit stetiger Kennlinie: 2 Spannungswerte mit genügendem Abstand - Außerdem: Einfache Arithmetik im Dualsystem (vor allem Subtraktion) B=2 - Deshalb: Binärsystem mit Basis - Binärzahlen: Folgen der 2 Grundziffern 0, 1 - Positionssystem (Stellenwertsystem): Stellung der Ziffer in Zahl entspricht Potenz von 2 (Stellenwert) Beispiel: 11012 = 1*23 + 1*22 + 0*21 + 1*20 = 8 + 4 + 0 + 1 = 1310 (Æ Primitive Konvertierung ins Dezimalsystem (besser: siehe 1.4)) Dr. K. Richter Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 4 Fortsetzung: Binärsystem (Dualsystem) bit, Byte, Kilo-, Mega-, Gigabyte ... - Alle Zeichen werden im Computer binär codiert, d.h. als Folgen von binären Zeichen (Binärzeichen; engl.: binary digit Æ bit) - bit ... kleinste Informationseinheit für rechnerinterne Darstellung - 1 Byte = 8 bit (Hauptspeicher im Computer: byteweise adressiert) 1 KByte = 210 Byte 1 MByte = 220 Byte = = 1.024 Byte 1024*1024 Byte = 1.048.576 Byte 1 GByte = 230 Byte = 1024*1024*1024 Byte = 1.073.741.824 Byte usw. Dr. K. Richter 1.3 Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 5 Oktal- und Hexadezimalsystem - Binärdarstellung führt auf sehr lange Zahlen (Bitfolgen) - Einfache kürzere Darstellung mittels Oktal- und Hexadezimalsystem (bessere Lesbarkeit, höhere Informationsdichte) a) Oktalsystem - Basis: B=8 (enge Beziehung zum Binärsystem: 8 = 23 !!) - Oktalzahlen: Folgen der 8 Grundziffern 0, 1, 2, ... , 7 - Stellung der Ziffer in Zahl entspricht Potenz von 8 (Stellenwert) - Beispiel: 3078 = 3*82 + 0*81 + 7*80 = 3*64 + 0 + 7*1 = 19910 (Æ Primitive Konvertierung ins Dezimalsystem (besser: siehe 1.4)) Dr. K. Richter Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 6 Fortsetzung: Oktal- und Hexadezimalsystem b) Hexadezimalsystem - Basis: B=16 (enge Beziehung zum Binärsystem: 16 = 24 ) - Hexadezimalzahlen: Folgen der 16 Grundziffern 0, 1, 2, ... ,9, A, B, C, D, E, F (A ... Kürzel für Ziffer „10“, ..., F ... Kürzel für Ziffer „15“) - Stellung der Ziffer in Zahl entspricht Potenz von 16 (Stellenwert) - Beispiel: A0816 = 10*162 + 0*161 + 8*160 = 10*256 + 0*16 + 8*1 = 256810 (Æ Primitive Konvertierung ins Dezimalsystem (besser: siehe 1.4)) Dr. K. Richter Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 7 Fortsetzung: Oktal- und Hexadezimalsystem - Wichtig: Gefühl für andere Zahlensysteme entwickeln! Beispiel 1: Größte Zahl mit 4 Ziffern in verschiedenen Zahlensystemen Allgemein für Zahlensystem mit Basis B: 4-mal höchste Ziffer (B-1), Wert dieser Zahl = B4 - 1 Dezimalsystem (klar): 999910 (=104 - 1 ) 4 (= 2 - 1 = 15) Dualsystem: 11112 Oktalsystem: 77778 (= 84 - 1 = 212 -1 = 4095) Hexadezimalsystem: FFFF16 (= 164 - 1 = 216 -1 = 65535) Beispiel 2: Feiern Sie runde Geburtstage in verschiedenen Zahlensystemen! etwa: 25. Geburtstag: 1005. Geburtstag ( = 52 , d.h. B=5) 27. Geburtstag: 10003. Geburtstag ( = 33 , d.h. B=3) „Rundester“ Geburtstag, den ein normaler Mensch erreichen kann: 64. Geburtstag: 10000002. Geburtstag ( = 26 ) !!! = 10004. Geburtstag ( = 43 ) = 1008. Geburtstag ( = 82 ) Æ In welchen Zahlensystemen sind z. B. der 20., 21., 22., 24., 26., 27. bzw. 28. Geburtstag „rund“ bzw. „halbrund“ (wie z. B. 25 im Dezimalsystem, d.h. <letzte Ziffer> = B/2)? Dr. K. Richter Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 8 Fortsetzung: Oktal- und Hexadezimalsystem c) Konvertierung vom Dual- ins Oktal- bzw. Hexadezimalsystem - Konvertierung Dualsystem Æ Oktalsystem: 8 = 23 Æ 3 Dualstellen entsprechen 1 Oktalstelle. Also: Von rechts beginnend jeweils Dreiergruppen (Dualtriaden) konvertieren - Beispiel: Dualzahl 1001010000110111112 Dualzahl: 100 101 000 011 011 111 Oktalzahl: 4 5 0 3 3 78 - Konvertierung Dualsystem Æ Hexadezimalsystem: 16 = 24 Æ 4 Dualstellen entsprechen 1 Hexadezimalstelle. Also: Von rechts beginnend jeweils Vierergruppen (Halbbytes) konvertieren - Beispiel: Dualzahl 1001010000110111112 (wie oben) Dualzahl: 0010 0101 0000 1101 1111 Hexadezimalzahl: 2 5 0 D F 16 Dr. K. Richter Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 9 Fortsetzung: Oktal- und Hexadezimalsystem Übungsaufgabe für Hörsaal: Füllen Sie die leeren Felder aus (Konvertierung). Dualzahl Dr. K. Richter Oktalzahl Dezimalzahl Hexadezimalzahl 0101 11102 = ??? = ??? = ??? ??? = 3608 = ??? = ??? ??? = ??? = 12510 = ??? ??? = ??? = ??? = 9A16 Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 10 Fortsetzung: Oktal- und Hexadezimalsystem Lösung: Dualzahl Dr. K. Richter Oktalzahl Dezimalzahl Hexadezimalzahl 0101 11102 = 1368 = 9410 = 5E16 1111 00002 = 3608 = 24010 = F016 0111 11012 = 1758 = 12510 = 7D16 1001 10102 = 2328 = 15410 = 9A16 Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 11 1.4 Konvertieren von beliebigen Systemen ins Dezimalsystem mittels Hornerschema (vgl. Vorlesung 2) Eine in einem Positionssystem mit der Basis B dargestellte natürliche Zahl n mit N Stellen (siehe Folie 2) : N −1 n = ¦ bi * B i i =0 lässt sich mittels Hornerschema wie folgt darstellen (vgl. Vorlesung): n = (...(( bN −1 * B + bN −2 ) * B + bN −3 ) * B + ...+ b1) * B + b0 In dieser Weise können Konvertierungen in das Dezimalsystem einfacher als vorn durchgeführt werden (vor allem größere Zahlen). Bemerkung: Die in 1.2 und 1.3 demonstrierte „Primitive Konvertierung“ ins Dezimalsystem ist natürlich prinzipiell immer möglich. Beispiele: 109210 = ((1 * 10 + 0) * 10 + 9) * 10 + 2 = 109210 15718 = ((1 * 8 + 5) * 8 + 7) * 8 + 1 = 88910 2B916 = (2 * 16 + 11) * 16 + 9 = 69710 Dr. K. Richter Großübung zum Modul „Einführung in die Informatik“ (geht also auch) TU BAF, Institut für Informatik 12 1.5 Konvertieren vom Dezimalsystem in beliebige Systeme (umgekehrte Konvertierungsrichtung gegenüber 1.4, d.h. „Umkehrung von Horner“) Aufg.: Konvertierung einer natürl. Dezimalzahl x in ein System mit Basis B Algorithmus dafür: Schritt 1: Bilde x : B = y Rest z mit y ... ganzzahliges Div.-resultat, z ... ganzzahliger Divisionsrest. Schritt 2: - Falls y 0: Mache y zum neuen x und setze wieder mit Schritt 1 fort („Schleife“) - Sonst (d.h. falls y = 0 ): Ende des Algorithmus. Die Divisionsreste z bilden - von unten nach oben gelesen – die gesuchte Zahl mit der Basis B. Mit einfachen Worten: Fortgesetzte Division von x durch B bis das ganzzahlige Divisionsresultat gleich Null ist. Dr. K. Richter Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 13 Fortsetzung: Konvertieren vom Dezimalsystem in beliebige Systeme Beispiel 1: Konvertiere 4210 ins Dualsystem (x=42, B=2) x B y 42 : 2 = 21 21 : 2 = 10 10 : 2 = 5 5:2= 2 2:2= 1 1:2= 0 z Rest: 0 Rest: 1 Rest: 0 Rest: 1 Rest: 0 Rest: 1 Æ Resultat: 4210 = 1010102 Beispiel 2: Konvertiere 32210 ins Hexadezimalsystem (x=322, B=16) x B y z 332 : 16 = 20 Rest: 12 20 : 16 = 1 Rest: 4 1 : 16 = 0 Rest: 1 Æ Resultat: 33210 = 14C16 Beispiel 3: Konvertiere 18310 ins Oktalsystem (x=183, B=8) x B y z 183 : 8 = 22 Rest: 7 22 : 8 = 2 Rest: 6 2 : 8 = 0 Rest: 2 Dr. K. Richter Æ Resultat: 18310 = 2678 Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 14 1.6 Grundrechenoperationen (+-*/) im Dualsystem a) Addition - Rechenregeln für Addition zweier Binärziffern: 0+0 =0 0+1 =1 1+0 =1 1+1 = 0 (Übertrag 1) 1 + 1 + 1 = 1 (Übertrag 1) (Die rote „1“ ist ein Übertrag) Beispiele: binär: dezimal: 01010111 +10010110 Übertrag: 1 11 =11101101 87 + 150 1 237 binär: dezimal: 01111101 125 + 0 1 0 1 1 1 0 1 + 93 Übertrag: 1 1 1 1 1 1 1 =11011010 218 Entsprechend kann man Oktal-, Hexadezimalzahlen usw. addieren hexadezimal: 5FB + 807 Übertrag: 11 = E02 Dr. K. Richter dezimal: 1531 + 2055 3586 oktal: 475 + 163 Übertrag: 11 = 660 Großübung zum Modul „Einführung in die Informatik“ dezimal: 317 + 115 1 432 TU BAF, Institut für Informatik 15 Fortsetzung: Grundrechenoperationen (+-*/) im Dualsystem b) Negative Zahlen und Subtraktion im Dualsystem - Natürlich kann man praktisch in jedem anderen Zahlensystem entsprechend dem Dezimalsystem subtrahieren (siehe Addition) - Aber: Im Computer wird Subtraktion auf Addition zurückgeführt Prinzip: a – b = a + bk , wobei bk Komplement zu b ist - zwei Arten von Komplement für Zahlensystem mit Basis B: -- B-Komplement (rechentechnisch leichter realisierbar) -- (B-1)-Komplement (hier nicht behandelt: siehe Vorlesung!) Das Zweier-Komplement im Dualsystem (B-Kompl. mit B=2): - feste Stellenanzahl s (im Computer: in der Regel Vielfache von 8 bit (1 Byte)) Æ im Folgenden wegen Einfachheit: s = 8 bit (1 Byte) - Festlegung: bit mit höchstem Stellenwert (MSB ... Most Signifikant Bit) bestimmt Vorzeichen: wenn dort 1 Æ Zahl ist negativ ( <0) wenn dort 0 Æ Zahl ist positiv (>=0) Dr. K. Richter Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 16 Fortsetzung: Das Zweier-Komplement für Dualzahlen - pos. Zahlenbereich darf MSB nicht mit umfassen, d.h. pos. Zahlenbereich: 0, 1, ..., 2s-1-1 (s-te Stelle ist MSB!) - Eine negative Zahl –n ist Zweierkomplement von n - Bildung des Zweierkomplements von n (vgl. Vorlesung): Æ1, 1Æ Æ0) (1) Zahl n bitweise invertieren (Stellenkomplement, d.h. 0Æ (2) Zur erhaltenen Zahl wird 1 addiert - Man erhält als darstellbaren Bereich für s=8: Pos. Zahlenbereich: 0, 1, ... , 127 (27 versch. Zahlen) (Null hier enthalten) Neg. Zahlenbereich: -128 ( = -27), -127, ..., -1 (27 versch. Zahlen) pos. Zahlenbereich neg. Zahlenbereich: 0000 0000 = 010 0000 0001 = 110 ... ... 0111 1111 = 12710 1000 0000 = -12810 1000 0001 = -12710 ... ... 1111 1111 = -110 Dr. K. Richter Großübung zum Modul „Einführung in die Informatik“ (keine Null!) TU BAF, Institut für Informatik 17 Fortsetzung: Das Zweier-Komplement für Dualzahlen - Subtraktion nun gemäß a – b = a + bk , wobei bk Zweier-Komplement zu b ist - Beispiel 1: Berechne 12 - 17 (1) Zweierkomplement zu 17: 0001 0001 17 1110 1110 Stellenkomplement von 17 + 1 1110 1111 Zweierkomplement von 17 (2) Addition: 0000 1100 + 1110 1111 1111 1011 12 + (Zweierkomplement von 17) 12 Ergebnis (MSB=1 Æ Ergebnis negativ) (3) Den Betrag des Resultats als normale Dualzahl erhält man als Zweierkomplement des obigen Ergebnisses (Vorz. bekannt): + 0000 0100 1 0000 0101 Stellenkomplement des Ergebnisses 5 (Betrag) Æ Ergebnis: 12 – 17 = -5 Æ für den Computer ist diese Berechnung der Subtraktion sehr einfach Dr. K. Richter Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 18 Fortsetzung: Das Zweier-Komplement für Dualzahlen - Beispiel 2: Berechne 7 – 4 (zunächst auf Papier im Hörsaal) (1) Zweierkomplement zu 4: 0000 0100 4 1111 1011 Stellenkomplement von 4 + 1 1111 1100 Zweierkomplement von 4 (2) Addition: 0000 0111 + 1111 1100 0000 0011 7 + (Zweierkomplement von 4) 7 Ergebnis (MSB=0 Æ positiv) Æ7–4=3 Im Beispiel gibt es einen Überlauf 1 in die nicht vorhandene 9. Stelle (s+1). Wenn das Resultat im darstellbaren Bereich -128, -127, ..., +127 für s=8 liegt, dann kann dieser Überlauf vernachlässigt werden. Liegt das Ergebnis aber außerhalb des darstellbaren Bereichs, so ist das Resultat falsch (s. Beispiel in Vorlesung; ist beim Computer zu beachten) Dr. K. Richter Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 19 Fortsetzung: Grundrechenoperationen (+-*/) im Dualsystem c) Multiplikation und Division im Dualsystem - Natürlich kann man praktisch in jedem anderen Zahlensystem entsprechend dem Dezimalsystem multiplizieren und dividieren. - Aber: Im Computer wird Multiplikation bzw. Division durch Kombination von Verschieben (Shift) und wiederholter Addition bzw. Subtraktion (durch Addition mit Komplement!) erreicht - Zu Verschieben: Multiplikation einer Dualzahl mit einer Zweierpotenz 2k entspricht einem Verschieben der Zahl um k Stellen nach links (entspricht im Dezimalsystem einer Multiplikation mit 10k) Beispiel 1 (im Dualsystem): 0001 0111 * 100 = 0101 1100 Mult. mit 2k=22 Æ Verschieben um k=2 Stellen (dieses Beispiel im Dezimalsystem: 23 * 4 = 92 ) Æ Entsprechend: Verschieben in anderen Zahlensystemen Beispiel 2 (im Hexadezimalsystem): A * 1000 = A000 Multiplikation mit 163 Æ Verschieben um 3 Stellen (dieses Beispiel im Dezimalsystem: 10 * 4096 = 40960) Dr. K. Richter Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 20 2) Konvertierung gebrochener Zahlen zwischen Zahlensystemen 2.1) Konvertierung echt gebrochener positiver Zahlen beliebiger Zahlensysteme ins Dezimalsystem - Echt gebrochene positive Zahl n (0<=n<1) mit Basis B: −1 n= ¦b * B i i i =− M - Konvertierung wieder mit Hilfe des Hornerschemas (vgl. 1.4): n = (...( b− M * 1 1 1 1 1 + b− M +1 ) * + b− M + 2 ) * + ... + b− 2 ) * + b−1 ) * B B B B B Dr. K. Richter Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 21 Fortsetzung: Konvertierung gebrochener Zahlen Beispiel 1: Zu konvertierende Dualzahl: 0.10112 (M=4; b-1=1, b-2=0, b-3=1, b-4=1) Konvertierung ins Dezimalsystem: 1 1 1 1 11 0.10112 = (((1* + 1) * + 0) * + 1) * = = 0.687510 2 2 2 2 16 Natürlich auch primitive Konvertierung gemäß 1.2 möglich: 0.10112 = 1*2-1 + 0*2-2 + 1*2-3 + 1*2-4 = 1/2 + 0 + 1/8 + 1/16 = 11/16 = 0.687510 Beispiel 2: Zu konvertierende Oktalzahl: 0.638 (M=2; b-1=6, b-2=3) Konvertierung ins Dezimalsystem: 0.638 = (3 * 1 1 51 + 6) * = = 0.79687510 8 8 64 Primitive Konvertierung: 0.638 = 6*8-1 + 3*8-2 = 6/8 + 3/64 = 51/64 = 0.79687510 Dr. K. Richter Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 22 Fortsetzung: Konvertierung gebrochener Zahlen 2.2) Konvertierung echt gebrochener positiver Dezimalzahlen x in beliebige Zahlensysteme mit Basis B (wieder „Umkehrung des Hornerschemas“ aus Abschn. 2.1) Algorithmus dafür: (klar: Resultat ist echt gebrochen, d.h. beginnt mit „0.“) Schritt 1: Bilde x * B = y Überlauf z wobei y ... echt gebrochener Produktanteil, z ... ganzzahliger Produktanteil. Schritt 2: - Falls y ? 0.0: Mache y zum neuen x und setze danach mit Schritt 1 fort („Schleife“) - Sonst (d.h. falls y = 0.0) : Ende des Algorithmus. Die ermittelten Überläufe bilden – von oben nach unten gelesen – die Nachkommastellen der gesuchten Zahl. Mit einfachen Worten: Fortgesetzte Multiplikation von x mit B bis der Nachkommaanteil des Produkts gleich 0 ist. Dr. K. Richter Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 23 Fortsetzung: Konvertierung echt gebrochener pos. Dezimalzahlen x Beispiel 1: x B y 0.6875 * 2 = 0.375 0.375 * 2 = 0.75 0.75 * 2 = 0.5 0.5 * 2 = 0.0 Konvertierung von 0.687510 ins Dualsystem (B=2) z Überlauf: 1 Überlauf: 0 Resultat: 0.687510 = 0.10112 Überlauf: 1 (vgl. Folie 22) Überlauf: 1 Beispiel 2: Konvertierung von 0.79687510 ins Oktalsystem (B=8) x B y z 0.796875 * 8 = 0.375 Überlauf: 6 0.375 * 8 = 0.0 Überlauf: 3 Resultat: 0.79687510 = 0.638 (vgl. Folie 22) 2.3) Konvertierung unecht gebrochener positiver Zahlen Vorgehen: ganzzahligen Anteil sowie echt gebrochenen Anteil der Zahl getrennt voneinander konvertieren (die jeweiligen Methoden dafür wurden vorn erläutert) und dann zusammensetzen. Dr. K. Richter Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 24 Fortsetzung: Konvertierung unecht gebrochener positiver Zahlen a) Konvertierung unecht gebrochener positiver Dezimalzahlen in andere Zahlensysteme (jeweils „Umkehrung von Horner“) Beispiel: Konvertierung von 46.37510 ins Dualsystem Ganzzahliger Anteil: 4610=1011102 Echt gebrochener Anteil: 0.37510=0.0112 46 : 2 = 23 23 : 2 = 11 11 : 2 = 5 5:2= 2 2:2= 1 1:2= 0 0.375 * 2 = 0.750 Überlauf: 0 0.750 * 2 = 0.5 Überlauf: 1 0.5 * 2 = 0.0 Überlauf: 1 Rest: 0 Rest: 1 Rest: 1 Rest: 1 Rest: 0 Rest: 1 Resultat der Aufgabe durch Zusammensetzen der beiden Anteile: 46.37510 = 101110.0112 Dr. K. Richter Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 25 Fortsetzung: Konvertierung unecht gebrochener positiver Zahlen b) Konvertierung unecht gebrochener positiver Zahlen beliebiger Systeme mit Basis B ins Dezimalsystem (Hornerschema!) Beispiel: Konvertierung von 101110.0112 ins Dezimalsystem (vgl. vorhergehende Folie) Ganzzahliger Anteil: 1011102 = 4610 1011102 = ((((1 * 2 + 0)* 2 + 1) * 2 + 1) * 2 + 1) * 2 + 0 = 4610 Echt gebrochener Anteil: 0.0112 1 1 1 0.0112 = ((1* + 1) * + 0) * = 0.37510 2 2 2 Resultat der Aufgabe durch Zusammensetzen der beiden Anteile: 101110.0112 = 46.37510 Dr. K. Richter Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 26 3) Ganze Oktal- und Hexadezimalzahlen in Python - Kurzerklärungen zum ganzzahligen Python-Datentyp „int“: (1) Computer verarbeiten Daten (Objekte). Daten besitzen Typ und Wert. Ein Datentyp ist (sehr grob gesagt) ein festgelegter Wertebereich, aus dem die Daten Werte annehmen können. Für jeden Typ sind zugelassene Operatoren und deren Wirkung erklärt. (2) Der Typ int (ganze Zahlen) in Python (mehr dazu: Vorlesung): z.B. 1, 2, 5, -100, 23598, -200456 ... (hier: Dezimalzahlen!) In Python kann man auch ganze oktale Zahlen eingeben (beginnen mit 0 (Null)): z.B. 032, 0711, ... Auch die Eingabe ganzer hexadezimaler Zahlen ist möglich (beginnen mit 0x): z.B 0x3A, 0x5c4, ... Æ Bemerkung: Die Eingabe ganzer binärer Zahlen ist nicht möglich. Mit ganzen oktalen u. hexadezimalen Zahlen kann man in Python z.B. addieren (+), subtrahieren (-), multiplizieren (*) und dividieren (/). Das jeweilige Resultat ist (wie die Operanden) ebenfalls ganzzahlig. Division ergibt also den ganzzahligen Anteil des Divisionsresultats. Den Divisionsrest erhält man mit dem Operator % Dr. K. Richter Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 27 Fortsetzung: Ganze Oktal- u. Hexadezimalzahlen in Python - Arbeit im interaktiven Modus des Python-Interpreters: Æ Arithmetischen Ausdruck nach Prompt „>>>“ eingeben; danach ENTER Æ Die Resultatausgabe erfolgt in Python stets im Dezimalsystem Æ Kommentar nach „#“ wird von Python nicht ausgewertet >>> 011 9 >>> 0x1F 31 >>> 0x1f-0x3 28 >>> 0xB+0100 75 >>> 0xA*0x10 160 >>> 0x15c/0xa1 2 >>> 016/05 2 >>> 016%05 4 Dr. K. Richter #Ausgabe der Oktalzahl 011 als Dezimalzahl <ENTER> #oder: 0x1f; Ausgabe der Hexadezimalzahl 0x1F als Dezimalzahl #Subtraktion zweier Hexadezimalzahlen #Addition einer Hexadezimalzahl mit einer Oktalzahl #Multiplikation zweier Hexadezimalzahlen #Division zweier Hexadezimalzahlen (ganzz. Resultat) #Ganzer Anteil des Divisionsresultats zweier Oktalzahlen #Dazugehoeriger Divisionsrest Großübung zum Modul „Einführung in die Informatik“ TU BAF, Institut für Informatik 28