Kapitel 2:

Datentypen (DT)

Datentyp: - Wertemenge - Operationen abstrakte DT: "Algebra" konkrete DT: Wertemenge ::= Menge der Wertdarstellungen Operationen ::= Funktionen über den Wertdarstellungen DT (üblicherweise von der Hardware unterstützt): - Bit - Bitmuster - Betragszahl - Ganzzahl - Gleitkommazahl - Textzeichen - Verbunde aus Elementen (z.B. Text) [- Maschinenbefehle]

Betragszahlen

Wertemenge : {0,1,2,...,maxb} Operationen : Konstanten = 0,1,2,... Funktionen = +,-,*,/,modulo ( <,>,=,<=,>=,<> ->Achtung:diese Operationen werden auf bool abgebildet! ) Darstellung : 1. Striche |, ||, |||, ||||, |||||, ||||||, ||||||,... 2. römische Zahlen I,II,III,IV,V,VI,VII,... 3. Stellensysteme ( auch Ziffernsysteme ) nach folgender Formel (Abb. 2-1) zu berechnen:

Formel Betragszahlen (abb2-1.jpg)

Abb.2-1:Stellensysteme
Beispiel: z=13410 dann ist n=3 und b=10 (hier gegeben) z0=4, z1=3, z2=1 ,d.h. 100*z2+10*z1+1*z0 100*1 +10*3 +1*4 = 134 Es ist: maxb=bn-1 (D.h. hier: 103-1=1000-1=999 ) Anmerkung: Im Rechner gilt der Basiswert b = 2

Einschub: Das binäre Zahlensystem:

Wandlungen zwischen den Systemen: 2er-System -> 10er-System Beispiel: Diese Methode geht über das Bildungsgesetz (Formel Abb. 2-1). 10er-System -> 2er-System Beispiel: 42 42 : 2 = 21 Rest 0 21 : 2 = 10 Rest 1 10 : 2 = 5 Rest 0 5 : 2 = 2 Rest 1 2 : 2 = 1 Rest 0 1 : 2 = 0 Rest 1 42 = 101010 ( von unten nach oben abgelesen ) oder alternativ: 42 : 32 = 1 10 : 16 = 0 10 : 8 = 1 2 : 4 = 0 2 : 2 = 1 0 : 1 = 0 42 = 101010 ( von oben nach unten gelesen ) Diese Methode wird als Divisionsmethode bezeichnet. Addition bei binären Zahlen: 1. 1 + 1 = 0 mit Ðbertrag = 1 2. 0 + 1 = 1 + 0 = 1 mit Ðbertrag = 0 3. 0 + 0 = 0 mit Ðbertrag = 0 Anmerkung: Die Schaltelemente Halb- und Volladdierer sind in der Lage diese Operation auszuführen, wobei aber nur der Volladdierer in der Lage ist den Ðbertrag zu berücksichtigen. Das kleine 1+1 der binären Zahlen (Tab.2-1):
xyüalt süneu
000 00
00110
01010
01101
10010
10101
11001
11111
Tab.2-1: das kleine 1+1
Problem: die beschränkte Stellenzahl, dadurch wird eine Bereichsüberschreitung möglich z.B.: 8 Bit, d.h. maxb=28-1=255, aber bei der Addition 155 (aus 8Bit) + 128 (aus 8Bit) = 283 > 255 (,d.h. nicht aus 8Bit) mögliche Prozessorreaktionen: a) eine Fehlermeldung b) Modulo-Arithmetik anwenden => beides, d.h. Fehler-Signalisierung unterdrückbar Die Modulo-Arithmetik: ein Beispiel: gegeben: n=3, d.h. Zahlen von 0-7 sind darstellbar. 3+7 = 2 dies berechnet sich aus folgender Formel: 3+7=(3+7) mod 2n in binärer Form: 011 + 111 = 010 oder allgemein: a+b::=(a+b) mod Bereichn veranschaulicht wird die Modulo-Arithmetik in Abb. 2-2
Modulo-Arithmetik (abb2-2.jpg)
Abb.2-2: die Modulo-Arithmetik

Ganze Zahlen

Wertebereich: { ming,...,-1,0,1,...,maxg } Operationen : +,-,*,/,mod Darstellungsformen (spez. negative ganze Zahlen): - Vorzeichen, Betragszahl Bsp.: -5 => 10101 Aber es gibt zwei Nullen: 10000 und 00000 - Einerkomplement Bsp.: 00101 (steht für die 5) not (steht für das Minuszeichen -) = 11010 (das Einerkomplement bildet nun die negative ganze Zahl) Aber auch hier: Es gibt zwei gültige Nullen einmal 11111 (steht für -0) und 00000 (steht für +0) Bei sämtliche Operationen muß nun eine Fallunterscheidung gemacht werden. => Einführung des Zweierkomplements: 00101 not = 11010 ( Einerkomplement ) + 00001 ( addiere 1) = 11011 ( Das Zweierkomplement ) daraus folgt für den Bereich der darstellbaren Zahlen, daß [ming = -2n-1,...,maxg = 2n-1-1] mit n = Anzahl der Bitstellen

Festkommazahlen

Festkommazahlen werden nach folgender Formel (Abb. 2-3) berechnet:

Formel Festkommazahlen (abb2-3.jpg)

mit n Stellen vor und m Stellen hinter dem Komma und mit b als Basis des Zahlensystems.
Abb.2-3: Formel für Festkommazahlen
Beispiele:

Gleitkommazahlen

Gleitkommazahlen bilden eine Annäherung an die reellen Zahlen. ( Annäherung, weil wir eine endliche Wertemenge haben und darunter die Genauigkeit leidet. ) Reelle Zahlen werden durch folgende Formel dargestellt: Z = M*gE (wobei M die Mantisse, g die Basis und E den Exponenten bildet) ein Beispiel: 16,25 = 0,1625 * 102
1 6 2 5 0 2
diese Darstellung läßt sich wie folgt aufschlüsseln:
  1. die ersten vier Ziffern sind die Nachkommastellen der 0,1625 (man zieht immer das "," vor die erste Ziffer). Dadurch, dass man jetzt die 1625 also die Nachkommastellen hat, kann man diesen Teil als Festkommazahl speichern.
  2. Da das Komma verschoben wurde muß man feststellen, um wieviele Stellen es verschoben wurde. Die Anzahl der Stellen spiegelt sich im Exponenten wieder. Die letzten beiden Ziffern bilden den oben genannten Exponenten, dieser wird als Ganzzahl gespeichert.
Exponentenanpassung und die Problematik: 16,25 = 0,1625 * 102
1 6 2 5 0 2
= 0,01625 * 103
0 1 6 2 0 3
=> 5 fehlt!! Verlust der Genauigkeit Gleitkommazahlen "Normalisierung" Normalisierungsbedingung: 1/g < |m| <1 ( das höchstwertige gesetzte bit, steht direkt hinter dem komma ) und wieder ein beispiel: 0,16*102 + 0,3*104 ( Exponentenanpassung ) = 0,0016*104 + 0,3*104 => 0,0016*104 + 0,3000*104 = 0,3016*104 ( Normalisieren, falls erforderlich ) Gleitkommazahlen "Anomalien" Näherungen an die Menge der reellen Zahlen. daher: (x+y)+z = x+(y+z) (gilt nicht immer) wir machen auch hier ein Beispiel: 0,1*103 + 0,3*101 + 0,8*101 Berechnung linke Seite ( (x+y)+z ): (0,1*103 +0,003*103) +0,008*103 ( Klammer bindet ) (0,10*103) +0,008*103 = 0,10*103 Berechnung rechte Seite ( (x+(y+z) ): 0,1*103 +(0,3*101 +0,8*101) ( Klammer bindet) 0,1*103 + 1,1*101 0,10*103 + 0,011*103 = 0,11*103 Offensichtlich ist die rechte Seite ungleich der linken Seite Gleitkommazahlen "Charakteristische Parameter" minreal : kleinste darstellbare Zahl maxreal : größte darstellbare Zahl smallreal : kleinste Zahl x, mit x>0 und 1.0+x>1.0 genormte Formate: IEEE-7754 minreal = -(1-2m) *g(2e-1-1) maxreal = -(1-2-m) *g(2e-1-1) smallreal = 21-m

Textzeichen

Wertemenge = { Buchstaben } + { Sonderzeichen } + { Ziffern } + { Steuerzeichen } Beispiel: ISO-7bit-Code (US-ASCII)
  • 1 Zeichen pro Byte, wobei das erste Bit das Paritätsbit (Prüfbit) bildet
  • druckbare Zeichen ("A","0",",",...)
  • Formatsteuerzeichen (CR,LF,HT,VT,...)
  • Übertragungssteuerzeichen
Folgen variable Länge: Wertebereich=WGtyp*
  1. Länge vorangestellt
    3ABC
  2. Endezeichen
    ABCETX
  3. Füllzeichen
    AB         
  4. aus Inhalt Länge schließbar
  5. Anfang nächster Folge erkennbar (Fano-Bedingung)

Maschinenbefehle

Bitmuster:
 Operationscode  Argument  Argument 
a) feste Länge b) unterschiedliche Länge - des OP-Codes - der Argumente - der Parameterliste (variable Argumentenzahl) => häufig auftretende Befehle : kurz häufig auftretende Argumente : kurz i.a. Länge in ganzzahligen Vielfachen einer Grundeinheit ( meist 2 -> 32bit) Problematik: ein und dasselbe Bitmuster kann zulässige Werte verschiedener Typen darstellen ! zum Beispiel: kann sein: => Programmierfehler sind spät entdeckbar => verschiedene OP-Codes, z.B.: + Betrag + Ganzzahl + Gleitkommazahl

=>Typkennungen:

- neuere experimentelle Architekturen mit obligatorischer Typkennung ("tag")
01011000000

bestehend aus dem "tag" (hier Indikator für eine 8bit-Betragszahl):
010
+
und dem Code (Betragszahl "192"):
11000000