Großübung 1 - TU Freiberg

Werbung
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
Herunterladen