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, daþ 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