20.02.2013 Aufrufe

Rechnersysteme Vorlesung 2 - am Institut für Mathematik und ...

Rechnersysteme Vorlesung 2 - am Institut für Mathematik und ...

Rechnersysteme Vorlesung 2 - am Institut für Mathematik und ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Rechnersysteme</strong><br />

<strong>Vorlesung</strong> 2:<br />

Informationsspeicherung<br />

Meike Klettke<br />

Universität Greifswald<br />

Themen der <strong>Vorlesung</strong><br />

� Einführung, Zahlensysteme<br />

� Dezimal-, Binär-, Oktal-, Hexadezimalsystem<br />

� Umrechnung zwischen verschiedenen<br />

Zahlensystemen<br />

� Rechenoparationen mit Binärzahlen<br />

� Darstellen von Festkommazahlen<br />

� Darstellen von Gleitkommazahlen<br />

� Kodierung von Buchstaben <strong>und</strong> Zeichen<br />

� Literatur<br />

1<br />

2<br />

1


Zahlensysteme<br />

� Zahlensystem<br />

� wird zur Darstellung von Zahlen verwendet<br />

� Eine Zahl wird nach den Regeln des Zahlensystems als<br />

Folge von Ziffern dargestellt<br />

� Unterschieden werden<br />

� Additionssysteme <strong>und</strong><br />

� Stellenwertsysteme<br />

Additionssysteme<br />

� Zahl wird als Summe der Werte ihrer Ziffern dargestellt<br />

� Beispiel: römische Zahlen mit den Ziffern<br />

� I = 1<br />

� V = 5<br />

� X = 10<br />

� L = 50<br />

� C = 100<br />

� D = 500<br />

� M = 1000<br />

3<br />

4<br />

2


Zahlensysteme<br />

Römische Zahlen<br />

Ägyptische Zahlen<br />

� Das auf den ägyptischen Ziffern beruhende Zahlensystem<br />

stellt<br />

� positive ganze Zahlen<br />

� in einem Additionssystem zur Basis 10 dar,<br />

� jede Zehnerpotenz hat eigenes Symbol<br />

� Die Ziffern werden addiert.<br />

� Für die Null kein eigenes Symbol erforderlich.<br />

� Der betende Mann (Symbol siehe nächste Folie) steht<br />

sowohl <strong>für</strong> eine Million als auch <strong>für</strong> unendlich<br />

5<br />

6<br />

3


Ägyptische Zahlen /2<br />

Wert: 1 10 100 1000 10000 100000 1000000<br />

Hieroglyphe:<br />

einfacher Wasserlilie betender<br />

Strich Mann<br />

Rinds- Finger<br />

gespann<br />

Seilschlinge Kaulquappe<br />

oder Frosch<br />

Stellenwertsysteme<br />

� Die Stelle (Position) einer Ziffer impliziert deren Wert<br />

� Die 'niederwertigste' Position steht dabei im Allgemeinen rechts<br />

� Ein Stellenwertsystem hat<br />

� eine Basis B <strong>und</strong><br />

� Ziffern, die von 0 bis B-1 laufen.<br />

� Die Ziffernposition hat einen Wert, der einer Potenz der Basis N<br />

entspricht. Für die N-te Position hat man einen Wert von B N-1<br />

7<br />

8<br />

4


Dezimalsystem<br />

� Stellenwertsystem, Basis 10<br />

� Ziffern 0, 1, 2, 3, 4, 5, 6, 7, 8 <strong>und</strong> 9.<br />

� jeder Ziffernposition entspricht eine Zehnerpotenz<br />

� Beispiel 6857 bedeutet, dass<br />

� die 7 mit 10 0 = 1,<br />

� die 5 mit 10 1 = 10,<br />

� die 8 mit 10 2 = 100 <strong>und</strong><br />

� die 6 mit 10 3 = 1000<br />

� multipliziert wird, also<br />

� 6000 + 800 + 50 + 7<br />

� st<strong>am</strong>mt ursprünglich aus Indien<br />

� vom persischen <strong>Mathematik</strong>er Muh<strong>am</strong>mad ibn Musa al-Chwarizmi in<br />

seinem Arithmetikbuch ( 8. Jahrh<strong>und</strong>ert) verwendet<br />

� im 10. Jahrh<strong>und</strong>ert in Europa eingeführt, d<strong>am</strong>als noch ohne Null<br />

Technische Umsetzung des<br />

Dezimalsystems<br />

„Dasselbe, was du auf rechnerischem Wege gemacht hast, habe ich kürzlich mechanisch<br />

versucht <strong>und</strong> eine aus elf vollständigen <strong>und</strong> sechs verstümmelten Rädchen bestehende<br />

Maschine gebaut, welche gegebene Zahlen im Augenblick zus<strong>am</strong>menrechnet: addiert,<br />

subtrahiert, multipliziert <strong>und</strong> dividiert. Du würdest hell auflachen, wenn Du da wärest <strong>und</strong><br />

sehen könntest, wie sie, so oft es über einen Zehner oder H<strong>und</strong>erter weggeht, die Stellen<br />

zur Linken ganz von selbst erhöht oder ihnen beim Subtrahieren etwas wegnimmt.“<br />

(Brief von Schickard an Kepler <strong>am</strong> 20. September 1623)<br />

Gef<strong>und</strong>en im Buch von Becker, Drechsler, Molitor<br />

10<br />

9<br />

5


Binärsystem (Dualsystem)<br />

� von Gottfried Wilhelm Leibniz im 17. Jahrh<strong>und</strong>ert entwickelt<br />

� Stellenwertsystem mit der Basis 2 <strong>und</strong> den Ziffern 0 <strong>und</strong> 1<br />

� vor allem in der Informationstechnik verwendet,<br />

� 2 0 = 1<br />

� 2 1 = 2<br />

� 2 2 = 4<br />

� 2 3 = 8<br />

� 2 4 = 16<br />

� 2 5 = 32<br />

� …<br />

� 2 10 = 1024<br />

� usw.<br />

� Beispiel: 1011b = 11<br />

� 1 * 2 3 + 0 * 2 2 + 1 * 2 1 + 1 * 2 0 = 1 * 8 + 0 * 4 + 1 * 2 + 1 * 1 = 11<br />

Leibniz-Traktat zu Dualzahlen<br />

von 1679<br />

11<br />

12<br />

6


Weitere<br />

Stellenwertsysteme /1<br />

� binäre Zahlen unübersichtlich lang, schwer <strong>für</strong><br />

Menschen verwendbar,<br />

� Deshalb zur Darstellung oft Hexadezimalzahlen<br />

verwendet,<br />

� Basis 16<br />

� Ziffern 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E <strong>und</strong> F<br />

� Hexadezimale Zahlen <strong>und</strong> binäre Zahlen lassen sich<br />

leicht ineinander umwandeln,<br />

� 4 Stellen einer binären Zahl entsprechen einer Stelle einer<br />

hexadezimalen Zahl<br />

� Beispiel: 1001b = 9h<br />

Weitere<br />

Stellenwertsysteme /2<br />

Was ich noch gef<strong>und</strong>en habe:<br />

� Vigesimalsystem mit der Basis 20<br />

� Oktalsystem mit der Basis 8<br />

� Duodezimalsystem mit der Basis 12<br />

� Rechnung mit Dutzend <strong>und</strong> Gros<br />

� 1 Shilling = 12 Pence<br />

� St<strong>und</strong>enzählung hat in diesem System ihren Ursprung<br />

� Die Babylonier benutzten ein Zahlensystem mit einer Basis von<br />

60 (Sexagesimalsystem).<br />

13<br />

14<br />

7


Weitere<br />

Stellenwertsysteme /3<br />

� Basis 20: bei einigen Naturvölkern gef<strong>und</strong>en<br />

� zum Zählen wurden neben den Fingern auch noch die Füße<br />

verwendet<br />

� Das analog zu erwartende Zahlensystem zur Basis fünf bei<br />

Völkern, die nur eine Hand zum Zählen benutzen, wurde aber<br />

bisher nirgendwo entdeckt<br />

� In Neuseeland war hingegen das System zur Basis 11 üblich<br />

<strong>und</strong> einige Völker benutzen das System zur Basis 18<br />

(die Angaben zu weiteren Stellenwertsystemen st<strong>am</strong>men<br />

von www.wikipedia.de: also ohne Gewähr)<br />

Unärsystem<br />

� Das Unärsystem wird gern auf Bierdeckeln<br />

eingesetzt<br />

� Für die Darstellung der Zahl n werden n Striche<br />

verwendet.<br />

� Für die Darstellung großer Zahlen jedoch ungeeignet<br />

15<br />

16<br />

8


Zahlendarstellung in<br />

verschiedenen Zahlensystemen<br />

Dual-, Oktal- <strong>und</strong><br />

Hexadezimalsystem<br />

In der Informatik spielen das Dual-, Oktal- <strong>und</strong> Hexadezimalsystem eine<br />

zentrale Rolle.<br />

� Das Zehnersystem, (10 verschiedene Ziffern 0, 1, 2,…, 9) ist<br />

technisch schwer zu realisieren.<br />

� deshalb benutzt man in Rechnern intern das Dualsystem, bei dem<br />

nur zwei Ziffern, 0 <strong>und</strong> 1, verwendet werden, die sich technisch relativ<br />

leicht nachbilden lassen:<br />

� schwer zu merken <strong>und</strong> <strong>für</strong> Menschen unhandlich, deshalb<br />

Hexadezimalsystem <strong>und</strong> Oktalsystem<br />

17<br />

18<br />

9


Dual-, Oktal- <strong>und</strong><br />

Hexadezimalsystem<br />

� Eine einzelne Binärstelle (0 oder 1) wird als Bit bezeichnet<br />

� Abkürzung <strong>für</strong> „BInary digiT“, also Binärziffer.<br />

� kleinste Informationseinheit, die ein Computer verarbeiten kann<br />

� Dualsystem handelt es sich um ein Positionssystem. Der Wert einer<br />

Position ist hier jedoch eine Potenz von 2:<br />

� Beispiele:<br />

Dual-, Oktal- <strong>und</strong><br />

Hexadezimalsystem<br />

� Konvertieren zwischen Dual- <strong>und</strong> Oktalsystem<br />

� Neben dem Dualsystem sind in der Informatik noch das<br />

Oktalsystem <strong>und</strong> Hexadezimalsystem wichtig<br />

� Weil 2 3 = 8 (Basis des Oktalsystems) <strong>und</strong><br />

� Weil 2 4 = 16 (Basis des Hexadezimalsystems)<br />

� Umwandlung Dezimalzahl in Oktalzahl:<br />

� von rechts beginnend so genannte Dualtriaden (Dreiergruppen) bilden<br />

19<br />

20<br />

10


Dual-, Oktal- <strong>und</strong><br />

Hexadezimalsystem<br />

� Konvertieren zwischen Dual- <strong>und</strong> Oktalsystem<br />

� Bei der Umwandlung einer Oktalzahl in ihre<br />

Dualdarstellung geht man den umgekehrten Weg.<br />

� Es ist offensichtlich, dass ein Mensch sich die Zahl<br />

3614 (8) wesentlich leichter merken <strong>und</strong> d<strong>am</strong>it umgehen<br />

kann, als 011110001100 (2) .<br />

Dual-, Oktal- <strong>und</strong><br />

Hexadezimalsystem<br />

� Konvertieren zwischen Dual- <strong>und</strong> Hexadezimalsystem<br />

� Hexadezimalsystem, ähnlich leicht ins Dualsystem konvertierbar<br />

2 4 = 16<br />

� Umwandlung einer Zahl aus Dualsystem ins Hexadezimalsystem:<br />

� von rechts beginnend so genannte Dualtetraden (Vierergruppen)<br />

bilden.<br />

21<br />

22<br />

11


Bits <strong>und</strong> Bytes<br />

� Ein Byte ist eine Bezeichnung in der Informatik <strong>für</strong><br />

8Bit<br />

� eine adressierbare Speichereinheit, die groß genug<br />

ist, um ein beliebiges Zeichen aus dem Basis-<br />

Zeichensatz aufzunehmen.<br />

� einen Datentyp in einigen Progr<strong>am</strong>miersprachen <strong>für</strong><br />

eine 8 Bit breite Einheit (1 Byte = 8 Bit)<br />

� Achtung: In einigen Progr<strong>am</strong>miersprachen kann die<br />

Größe eines Bytes auch davon abweichend definiert<br />

werden.<br />

Konvertierungsalgorithmen<br />

Konvertieren von anderen Systemen in das Dezimalsystem<br />

Eine in einem Positionssystem mit der Basis B dargestellte<br />

natürliche Zahl n:<br />

lässt sich mit Hilfe des Hornerschemas wie folgt darstellen:<br />

Mit Hilfe dieser Darstellung können Konvertierungen in das<br />

Dezimalsystem einfach durchgeführt werden.<br />

23<br />

24<br />

12


Konvertieren aus dem<br />

Dezimalsystem<br />

Algorithmus <strong>für</strong> die Umwandlung einer Dezimalzahl x in ein<br />

Zahlensystem mit der Basis n:<br />

Konvertieren aus dem<br />

Dezimalsystem<br />

Zwei Beispiele dazu:<br />

25<br />

26<br />

13


Positionssysteme bei<br />

gebrochenen Zahlen<br />

Bei gebrochenen Zahlen trennt ein Punkt (Komma im Deutschen)<br />

� den ganzzahligen Teil der Zahl<br />

� vom gebrochenen Teil (Nachkommateil).<br />

Summenformel dazu:<br />

Positionssysteme bei<br />

gebrochenen Zahlen<br />

� Beispiele:<br />

27<br />

28<br />

14


Konvertieren echt gebrochener<br />

Zahlen in das Dezimalsystem<br />

Eine echt gebrochene Zahl<br />

n (n < 1):<br />

lässt sich mit Hilfe des Hornerschemas wie folgt darstellen:<br />

Beispiel:<br />

Konvertieren echt gebrochener Zahlen<br />

vom Dezimalsystem in andere Systeme<br />

� Algorithmus <strong>für</strong> die Umwandlung des Nachkommateils einer<br />

Dezimalzahl in ein anderes Positionssystem<br />

� B ist die Basis des Zielsystems<br />

29<br />

30<br />

15


Konvertieren echt gebrochener Zahlen<br />

vom Dezimalsystem in andere Systeme<br />

Zwei Beispiele:<br />

Die Überläufe z von oben nach unten nach 0,<br />

nebeneinander geschrieben liefern die gesuchte Zahl im<br />

Zahlensystem zur Basis B (im Beispiel2).<br />

Genauigkeitsverluste<br />

Manche gebrochenen Zahlen<br />

� lassen sich im Dezimalsystem genau darstellen<br />

� als Dualzahl jedoch nicht<br />

Z.B. Zahlen, die sich im Dualsystem nur<br />

durch eine periodische Ziffernfolge<br />

repräsentieren lassen, wie z. B.<br />

0.1(10) = 0.0001 1001 1001 1…(2):<br />

! Solche Ungenauigkeiten treten auch<br />

in den Rechnern auf, die ja mit dem<br />

Dualsystem arbeiten !<br />

Im Beispiel wiederholt sich das Bitmuster<br />

0011<strong>und</strong> es gilt:<br />

31<br />

32<br />

16


Konvertieren unecht<br />

gebrochener Zahlen<br />

Um eine unecht gebrochene Zahl zu konvertieren, muss diese<br />

� in ihren ganzzahligen Teil <strong>und</strong><br />

� ihren echt gebrochenen Teil aufgeteilt werden,<br />

die dann getrennt von einander zu konvertieren sind,<br />

Beispiel:<br />

� (12.25) 10 =(12) 10 + (0.25) 10<br />

� (1100) 2 + (0.01) 2 = (1100.01) 2<br />

Zwischenstand:<br />

� Zahlensysteme<br />

� Additionssysteme<br />

� Stellenwertsysteme<br />

� Verschiedene Stellenwertsysteme, zur Basis 2, 8, 10, 16<br />

� Umwandlung von ganzen Zahlen in andere Stellenwertsysteme<br />

� Umwandlung von gebrochenen Zahlen in andere<br />

Stellenwertsysteme<br />

� Was jetzt folgt:<br />

� Rechenoperationen im Binärzahlensystem<br />

33<br />

34<br />

17


Addition von Dualzahlen<br />

Für die duale Addition gilt allgemein:<br />

Beispiel:<br />

Subtraktion von Binärzahlen<br />

� Subtraktion von Binärzahlen (a – b) ist möglich, rechnerintern aber<br />

schwer realisierbar<br />

� Zweite Operation neben Addition notwendig<br />

� Gängige Praxis ist deshalb Verwendung negativer Zahlen <strong>und</strong><br />

Realisierung der Subtraktion als Addition (a + -b)<br />

� Negative Zahlen werden üblicherweise durch ihren Betrag mit<br />

vorangestelltem Minuszeichen dargestellt.<br />

� Gesondertes Vorzeichen rechnerintern nicht möglich<br />

� Deshalb Komplementbildung zur Erzeugung negativer Zahlen<br />

� zwei Arten der Komplementbildung, wobei B <strong>für</strong> das Zahlensystem<br />

steht:<br />

� B-Komplement (also Zweier-Komplement bei Binärzahlen) <strong>und</strong><br />

� (B-1)-Komplement (also Einer-Komplement bei Binärzahlen)<br />

� B-Komplement technisch leichter realisierbar ist, wird deshalb<br />

vorwiegend verwendet<br />

35<br />

36<br />

18


Bildung des<br />

Einerkomplementes<br />

� Vorzeichen einer Binärzahl wird gewechselt, indem alle Stellen<br />

invertiert werden.<br />

� Beispiel:<br />

� +10h = 0000 1010b (erste Stelle: Vorzeichen)<br />

� -10h = 1111 0101b<br />

� Weiteres Beispiel:<br />

� +65h = 0100 0001b<br />

� -65h = 1011 1110b<br />

� Vorteile: schnell zu bilden (auch in der Umsetzung im Rechner)<br />

� Nachteile: zwei Darstellungen der Null<br />

� +0h = 0000 0000b<br />

� -0h = 1111 1111b<br />

Bildung des<br />

Zweierkomplementes<br />

� alle Stellen werden invertiert <strong>und</strong> es wird eine 1 addiert<br />

� Beispiel:<br />

� +10h = 0000 1010b<br />

� -10h = 1111 0101b + 1b = 1111 0110b<br />

� Weiteres Beispiel:<br />

� +65h = 0100 0001b<br />

� -65h = 1011 1111b<br />

� Vorteile: nur eine Darstellung der Null<br />

� 0h = 0000 0000b<br />

� Wird in den meisten Rechnern eingesetzt <strong>und</strong> im Folgenden<br />

weiter verwendet<br />

37<br />

38<br />

19


Andere Variante:<br />

Exzessdarstellung<br />

� Es gibt auch die Möglichkeit, zu allen Zahlen einen festen Wert<br />

(bias= Verschiebung, Abweichung, systematische<br />

Messabweichung eines Messgeräts) zu addieren, um d<strong>am</strong>it<br />

einen Wertebereich von zum Beispiel -128 bis 127 auf 0 – 256<br />

zu transformieren.<br />

� Das heißt auch Nullpunktverschiebung<br />

� Dabei wird zu allen Zahlen vor der Berechnung 128 addiert,<br />

nach der Berechnung subtrahiert<br />

� Verfahren wird verwendet, um den Exponenten in der<br />

Darstellung reeller Zahlen zu speichern (folgt im Laufe der<br />

<strong>Vorlesung</strong>)<br />

Veranschaulichung des<br />

Zweier-Komplements<br />

Zuordnung der Bitkombinationen zu positiven <strong>und</strong> negativen Zahlen<br />

Zahlenring <strong>für</strong> vier Bits, erstes Bit ist Vorzeichenbit<br />

39<br />

40<br />

20


Rechenoperationen mit dem<br />

Zweier-Komplement<br />

� Regeln <strong>für</strong> die Bildung eines Zweier-Komplements<br />

1. jedes einzelne Bit wird invertiert (umgedreht)<br />

2. Zu der so entstandenen Bitkombination wird eine 1 addiert<br />

� Beispiel „ro<strong>und</strong>-trip“:<br />

Rechenoperationen mit dem<br />

Zweier-Komplement<br />

� Subtraktion a - b wird durch eine Addition a + -b realisiert<br />

� Beispiele:<br />

� ! Das geht nur bei dieser Operation !<br />

41<br />

42<br />

21


Rechenoperationen mit dem<br />

Zweier-Komplement<br />

Im Beispiel hat der vorne stattfindende Überlauf des Bits keinen<br />

Einfluss auf die Richtigkeit des Ergebnisses.<br />

Das gilt nicht allgemein. Wenn das Ergebnis nicht im darstellbaren<br />

Zahlenbereich liegt, dann erhält man bei einem Überlauf ein falsches<br />

Ergebnis:<br />

Rechenoperationen mit dem<br />

Einer-Komplement<br />

(B-1)-Komplement (Einer-Komplement) zum Vergleich.<br />

Die Zahlendarstellung ist hier symmetrisch. Es gibt eine positive <strong>und</strong><br />

eine<br />

negative 0.<br />

43<br />

44<br />

22


Rechenoperationen mit dem<br />

Einer-Komplement<br />

� Regeln <strong>für</strong> die Bildung eines Einer-Komplements<br />

� jedes einzelne Bit wird invertiert (umgedreht)<br />

� Führt die anschließende Addition des Komplements zum Überlauf<br />

einer 1, muss zum Ergebnis diese 1 hinzuaddiert werden (das heißt<br />

„Einer-Rücklauf “)<br />

� Beispiele:<br />

Multiplikation <strong>und</strong> Division im<br />

Binärsystem<br />

� ganzzahlige Multiplikation bzw. Division wird in einem Rechner<br />

allgemein mittels wiederholter Addition durchgeführt<br />

� Sonderfälle:<br />

� Multiplikators bzw. Divisors: 2, 4, 8, …<br />

� Multiplikation bzw. Division kann dann einfacher <strong>und</strong> schneller durch eine<br />

Verschiebung von entsprechend vielen Bits nach links bzw. rechts<br />

erfolgen:<br />

Bei 2 (2 1 ) um 1 Bit, bei 4 (2 2 ) um 2 Bits, bei 8 um 3 (2 3 ) Bits usw.<br />

45<br />

46<br />

23


Konvertieren durch sukzessive<br />

Multiplikation <strong>und</strong> Addition<br />

� Algorithmus zur Konvertierung aus einem beliebigen<br />

Positionssystem in ein anderes Positionssystem<br />

� Berechnung wird im Zielsystem mit der Basis B des<br />

Ausgangssystems durchgeführt<br />

� Basis B des Ausgangssystems im Zielsystem, Beispiel 10 als<br />

Dualzahl: 1010<br />

� Eingabezahl: b n ..b 0<br />

Reelle Zahlen<br />

Festpunktzahlen<br />

� Punkt (bzw. Komma) steht immer an der gleichen festgelegten<br />

Stelle,<br />

� Punkt wird natürlich nicht eigens mitgespeichert<br />

zahl hat die Länge n + m, wobei n Stellen vor <strong>und</strong> m Stellen nach<br />

dem Punkt gesetzt sind.<br />

47<br />

48<br />

24


Reelle Zahlen<br />

Festpunktzahlen<br />

� Bei Vorhandensein eines eigenen Vorzeichenbits können positive<br />

<strong>und</strong> negative Zahlen unterschieden werden.<br />

� Nachteile der Festpunktdarstellung:<br />

1. nur beschränkter Wertebereich mit festgelegter Anzahl von Bits<br />

2. Die Stelle des Punkts (Kommas) muss allgemein festgelegt<br />

werden.<br />

– sehr kleine, hochgenaue Werte <strong>und</strong><br />

– große Werte gearbeitet<br />

dann aber nicht gleichermaßen speicherbar<br />

� Deshalb: Festpunktdarstellung nur in Rechnern <strong>für</strong><br />

Spezialanwendungen verwendet<br />

� Sonst Gleitpunktdarstellung<br />

Reelle Zahlen<br />

IEEE-Format <strong>für</strong> float <strong>und</strong> double<br />

� IEEE =<strong>Institut</strong>e of Electrical and Electronics Engineers,<br />

� „ei trippel i“ gesprochen)<br />

� weltweiter Berufsverband von Ingenieuren aus den Bereichen<br />

Elektrotechnik <strong>und</strong> Informatik.<br />

� gibt auch Standards heraus<br />

� IEEE 754 = Gr<strong>und</strong>datenformate <strong>für</strong> binäre Gleitkommazahlen mit 32<br />

Bit (single precision) bzw. 64 Bit (double precision)<br />

49<br />

50<br />

25


Reelle Zahlen<br />

IEEE-Format <strong>für</strong> float <strong>und</strong> double<br />

Jede reelle Zahl kann in der Form 2.3756·10 3 angegeben werden. Bei<br />

dieser Darstellungsform setzt sich die Zahl aus zwei Bestandteilen<br />

zus<strong>am</strong>men:<br />

� Mantisse (2.3756) <strong>und</strong> Exponent (3), der ganzzahlig ist.<br />

Diese Form wird auch meist in Rechnern verwendet, außer dass dort<br />

nicht mit Basis 10, sondern mit Basis 2 gearbeitet wird.<br />

� Datentyp float - einfacher Datentyp<br />

� Datentyp double - doppelter Genauigkeit<br />

Reelle Zahlen<br />

IEEE-Format <strong>für</strong> float <strong>und</strong> double<br />

Zur Darstellung verwenden die C/C++- <strong>und</strong> Java-Datentypen float<br />

<strong>und</strong> double das standardisierte IEEE-Format, wobei vier Bytes <strong>für</strong><br />

float <strong>und</strong> acht Bytes <strong>für</strong> double definiert sind.<br />

51<br />

52<br />

26


Reelle Zahlen<br />

IEEE-Format <strong>für</strong> float <strong>und</strong> double<br />

� normalisierte Gleitpunktzahlen<br />

� „Normalisierung“ bedeutet, dass der Exponent so verändert wird, dass<br />

der gedachte Dezimalpunkt immer rechts von der ersten Nicht-Null-Ziffer<br />

liegt (im Binärsystem ist dies immer eine 1) – deshalb kann diese<br />

weggelassen werden, siehe vorherige Folie<br />

Reelle Zahlen<br />

IEEE-Format <strong>für</strong> float <strong>und</strong> double<br />

� In der Mantisse: höchstwertige „Einser-Bit“ immer links vom gedachten<br />

Dezimalpunkt (außer <strong>für</strong> 0.0). (Beim IEEE-Format wird dieses Bit nicht<br />

gespeichert.)<br />

� Der Exponent ist eine ganze Zahl, welche (nach Addition eines bias)<br />

ohne Vorzeichen dargestellt wird. Durch diese bias-Addition wird <strong>für</strong> den<br />

Exponent keine Vorzeichenrechnung benötigt.<br />

Der Wert von bias hängt vom Genauigkeitsgrad ab:<br />

- float (mit 4 Bytes, 8 Bits <strong>für</strong> Exponent): bias=127<br />

- double (mit 8 Bytes, 11 Bits <strong>für</strong> Exponent): bias=1023<br />

� d<strong>am</strong>it „Abbildung“ des Bereiches von -127-128 auf 0-256<br />

� Das Vorzeichenbit zeigt das Vorzeichen der Mantisse, die immer als<br />

Betragswert, auch im negativen Fall nicht als Komplement, dargestellt<br />

wird.<br />

53<br />

54<br />

27


Reelle Zahlen<br />

IEEE-Format <strong>für</strong> float <strong>und</strong> double<br />

Reelle Zahlen<br />

IEEE-Format <strong>für</strong> float <strong>und</strong> double<br />

Nach IEEE gilt <strong>für</strong><br />

float (einfach) <strong>und</strong><br />

double (doppelt):<br />

Sonderfälle des<br />

IEEE-Formats:<br />

55<br />

56<br />

28


Codes zur Darstellung von<br />

Zeichen: ASCII-Code<br />

� Nicht nur Zahlen müssen dargestellt <strong>und</strong> gespeichert werden,<br />

� Auch andere Arten von Informationen wie Zeichen (Texte)<br />

� bekannteste Kodierung da<strong>für</strong>:<br />

� ASCII-Code (American Standard for Coded Information Interchange)<br />

� festgelegte Abbildungsvorschrift zur binären Kodierung von Zeichen.<br />

� ASCII-Code umfasst<br />

� Klein-/Großbuchstaben des lateinischen Alphabets,<br />

� (arabische) Ziffern <strong>und</strong><br />

� viele Sonderzeichen.<br />

� Kodierung erfolgt in einem Byte (8 Bits), so dass mit dem ASCII-Code 256<br />

verschiedene Zeichen dargestellt werden können.<br />

� erstes Bit wird nicht vom Standard-ASCII-Code genutzt, d<strong>am</strong>it können im<br />

Standard-ASCII-Code nur 128 Zeichen dargestellt werden.<br />

� Unterschiedliche, speziell normierte, ASCII-Code-Erweiterungen nutzen<br />

57<br />

das erste Bit, um weitere 128 Zeichen darstellen zu können.<br />

ASCII-Code (Ausschnitt)<br />

58<br />

29


ASCII-Code<br />

Speicherung von Texten:<br />

� Kodierung aller Zeichen<br />

� Abspeicherung nacheinander<br />

� dadurch Zeichenkette (String)<br />

Ende der Zeichenkette wird in den Progr<strong>am</strong>miersprachen durch<br />

verschiedene Verfahren gekennzeichnet:<br />

� Die Länge der Zeichenkette wird im ersten bzw. in den ersten Bytes vor<br />

der eigentlichen Zeichenkette gespeichert. (PASCAL)<br />

� Ende der Zeichenkette wird durch ein besonderes, nicht darzustellendes<br />

Zeichen gekennzeichnet. So verwendet z.B. die Progr<strong>am</strong>miersprache<br />

C/C++ ein 0-Byte (Byte, in dem alle Bits 0 sind), um das Ende einer<br />

Zeichenkette zu kennzeichnen.<br />

Zahlendarstellungen im ASCII-<br />

Code<br />

Unterscheidung zwischen Ziffern <strong>und</strong> Zeichen: „0458“ != 0458<br />

59<br />

60<br />

30


ASCII-Code: Beispiele<br />

Beispiele zum Speichern von Zeichen im ASCII-Code:<br />

Uni-Code<br />

� ASCII-Code ist mit seinen 256 Zeichen sehr begrenzt.<br />

� deshalb weitere Kodierungsmöglichkeiten, zum Beispiel: Unicode<br />

� Unicode umfasst Zeichen oder Elemente praktisch aller bekannten<br />

Schriftkulturen <strong>und</strong> Zeichensysteme (Russisch, Arabisch, Chinesisch)<br />

� Unicode umfasste anfangs zwei Byte<br />

� d<strong>am</strong>it ließen sich bis zu 65 536 verschiedene Zeichen in dem<br />

System unterbringen (2 Byte = 16 Bit = 2 16<br />

Kombinationsmöglichkeiten)<br />

� In Version 3.1 wurden 94 140 Zeichen aufgenommen, d<strong>am</strong>it 4 Byte<br />

verwendet.<br />

61<br />

62<br />

31


Weitere Codes<br />

BCD-Code<br />

� BCD-Werte (Binary Coded Decimals) sind eine weitere Art der<br />

binären Kodierung von Zahlen bzw. Ziffern.<br />

� Für jede Dezimalziffer werden mindestens vier, manchmal auch acht<br />

Bits verwendet. Die jeweiligen Ziffern werden nacheinander immer<br />

durch ihren Dualwert angegeben.<br />

� eigentlich Speicherplatz verschwendende Art der Speicherung von<br />

Dezimalzahlen, erleichtert aber manche Anwendungen<br />

� Anwendungsbereiche:<br />

� Rechnen im Dezimalsystem,<br />

� Speichern von Dezimalzahlen (Telefonnummern u.ä.) (schnelle Umwandlung),<br />

� Ansteuerung von LCD-Anzeigen, um Dezimalziffern einzeln anzuzeigen.<br />

� Also alle Anwendungen, in denen häufige Umwandlungen zwischen<br />

Dual- <strong>und</strong> Dezimalsystem erfolgen müssen<br />

Weitere Codes<br />

BCD-Code<br />

- Beispiele:<br />

- Die Bitmuster 1010, 1011, …, 1111 werden im BCD-Code nicht<br />

<strong>für</strong> Ziffern benötigt. Sie können genutzt werden z.B. <strong>für</strong><br />

Vorzeichen +: 1010 <strong>und</strong> -: 1011<br />

63<br />

64<br />

32


Weitere Codes<br />

Gray-Code<br />

Beim Gray-Code zur Kodierung von Binärzahlen unterscheiden sich<br />

zwei aufeinanderfolgende Codewörter immer nur um genau ein Bit.<br />

Weitere Codes<br />

Gray-Code<br />

� Verwendung findet der Code z.B. <strong>für</strong> die binäre Ausgabe von Werten<br />

von A/D-Wandlern (A/D = Analog/Digital) zur Vermeidung unsinniger<br />

Zwischenwerte beim Auslesen.<br />

� Da sich bei jedem Zahlenübergang immer jeweils nur ein Bit ändert,<br />

werden unsinnige Zwischenwerte bei Übergängen von z.B. (7) 0111 zu<br />

(8) 1000 vermieden (z.B. 1111(15)), wenn die Übergänge von 0→1 <strong>und</strong><br />

1→0 unterschiedlich schnell in der HW ablaufen.<br />

� auch Methode, um Effekte durch Übertragungsfehler einzudämmen.<br />

� Im Gray-Code können Werte gespeichert werden.<br />

Sollen Werte in Gray-Zahlen arithmetisch weiterverarbeitet werden,<br />

müssen diese dazu natürlich erst in Dualzahlen umgewandelt werden<br />

65<br />

66<br />

33


Duale Größenangaben<br />

Gr<strong>und</strong>datentypen<br />

� In einem Computer werden Zeichen – wie z. B. Buchstaben – anders<br />

behandelt als ganze Zahlen <strong>und</strong> Gleitpunktzahlen wie z.B. die Zahl π =<br />

3.1415…<br />

� Beispiel von vorhin: „0815“ ≠ 0815<br />

� also Klassifikation der unterschiedlichen Datentypen<br />

� Unterscheidung im Speicherbedarf<br />

� d<strong>am</strong>it der darstellbaren Größe von Zahlen bzw. des Zeichenvorrats <strong>und</strong><br />

� Unterscheidung in der Interpretation des gegebenen Bitmusters.<br />

� Ordnet man in einem Progr<strong>am</strong>m Daten bestimmten Klassen wie<br />

Zeichen, ganze Zahl, einfach/doppelt genaue Gleitpunktzahl usw. zu,<br />

dann teilt man dem Rechner deren Datentyp mit.<br />

(Querverbindung: Algorithmen/Datenstrukturen)<br />

67<br />

68<br />

34


Gr<strong>und</strong>datentypen<br />

Wertebereiche der Gr<strong>und</strong>datentypen<br />

auf 32-Bit-Architekturen<br />

69<br />

70<br />

35


Verlust von Bits bei zu<br />

großen Zahlen<br />

Wird versucht, in einem Datentyp einen Wert abzulegen, der nicht in<br />

diesen Datentyp passt, so werden einfach die vorne überhängenden<br />

Dualziffern abgeschnitten.<br />

Verlust von Bits bei zu<br />

großen Zahlen<br />

Vorsicht:<br />

In Progr<strong>am</strong>miersprachen wie C/C++ <strong>und</strong> auch Java wird beim<br />

Abspeichern von Zahlen, die außerhalb des Wertebereichs eines<br />

Datentyps liegen, meist kein Fehler gemeldet, sondern es werden die<br />

überhängenden Bits abgeschnitten! Mit diesem falschen Wert wird<br />

weiter gearbeitet, was schließlich zu falschen Ergebnissen führt.<br />

71<br />

72<br />

36

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!