3.1 Standard-Datentypen
In den nachfolgenden Übersichtstabellen gilt für den /370-Assembler der angegebene Datentyp immer nur für den Anfangswert im DC-Befehl bzw. für Literale, da für eine Variable kein Datentyp definiert werden kann!
3.1.1 Das gezonte Format (für alphanumerische Daten, Zeichenketten)
Pro Byte wird ein Zeichen gespeichert.
Jedem Zeichen entspricht eine ganz bestimmte Bitkonfiguration. Es gibt mehrere Verschlüsselungstabellen, von denen sich die folgenden zwei durchgesetzt haben:
- EBCDIC ("Extended Binary Coded Decimals Interchange Code")
- ASCII ("American Standard Code for Information Interchange")
Variableninhalt | C/C++ | COBOL | PL/I | /370-ASSEMBLER | |||||
---|---|---|---|---|---|---|---|---|---|
n beliebige Zeichen | char (Achtung: nur 1 Zeichen) | PICTURE X(n) DISPLAY | CHARACTER (n) | CLn
nur Ziffern
| –
| PICTURE 9(n) DISPLAY
| PICTURE '(n)9'
| ZLn
| |
Man beachte, dass es in C/C++ keine alphanumerischen Datenfelder gibt. Die Realisierung von Zeichenketten erfolgt mit Hilfe von Tabellen, deren Elemente char-Zeichen sind und deren letztes Element eine binäre Null ist.
Mit Zahlen im gezonten Format kann man jedoch nicht rechnen. Es gibt daher noch 3 weitere Datenformate, die das Rechnen mit Zahlen im Computer ermöglichen:
3.1.2 Das gepackte Format (für Rechenfelder, Zahlen)
Pro Halbbyte wird eine Ziffer gespeichert. Das letzte Halbbyte ganz rechts enthält das Vorzeichen.Ein positives Vorzeichen wird durch die Hexadezimalziffern C, F, A oder E dargestellt, ein negatives durch D oder B, alle anderen Ziffern sind als Vorzeichen nicht erlaubt (in einigen EDV-Anlagen sind auch A, B und E ungültige Vorzeichen!).
Da in einem Computer immer nur ganze Bytes reserviert werden können, hat eine gepackte Zahl immer eine ungerade Anzahl von Ziffern!
Variableninhalt | C/C++ | COBOL | PL/I | /370-ASSEMBLER |
---|---|---|---|---|
n Ziffern, davon k Nachkommastellen und g Vorkommastellen | – | PICTURE 9(g)V9(k) COMP-3 | DECIMAL FIXED (n,k) | PLb (Achtung: b = n/2 Bytes) |
3.1.3 Das duale Format (für ganzzahlige Rechenfelder)
Zur Speicherung einer Zahl wird im Allg. ein Halbwort oder ein Wort verwendet.Nichtnegative Zahlen werden einfach als Dualzahl (mit führenden binären Nullen) dargestellt. Negative Zahlen werden durch das Zweierkomplement ihres Absolutbetrages dargestellt (mit führenden binären Einsern). Das erste (am weitesten links liegende) Bit wird als Vorzeichenbit interpretiert, dabei steht 1 für minus, 0 für plus.
Hat eine im dualen Format dargestellte Zahl ein negatives Vorzeichen, so ist - um ihren Wert zu erhalten - das Zweierkomplement zu bilden.
Variableninhalt | C/C++ | COBOL | PL/I | /370-ASSEMBLER |
---|---|---|---|---|
Halbwort | short int | PICTURE 9(4) COMP-4 | BINARY FIXED (15) | H |
Wort | long int | PICTURE 9(9) COMP-4 | BINARY FIXED (31) | F |
Doppelwort | – | – | – | D |
In C/C++ gibt es noch den Datentyp int , der je nach Betriebssystem short int oder long int entspricht.
3.1.4 Das Gleitkommaformat (für nichtganzzahlige Rechenfelder)
Eine Zahl wird bezüglich einer fix vereinbarten Basis (meist 16) durch ihre Mantisse (Ziffernstellen bzw. Genauigkeit) und ihren Exponenten (Größenordnung) dargestellt (eindeutig durch Normalisierung). Diese beiden Zahlenteile werden im Allg. in einem Wort oder Doppelwort gespeichert. Abhängig von der EDV-Anlage unterscheiden sich Gleitkommaformate durch die gewählte Basis, durch die Darstellung der Mantisse, durch die Darstellung des Exponenten und durch die Anordnung von Mantisse und Exponent.
Variableninhalt | C/C++ | COBOL | PL/I | /370-ASSEMBLER |
---|---|---|---|---|
Wort | float | COMP-1 | DECIMAL FLOAT (6) BINARY FLOAT (21) | E |
Doppelwort | double float | COMP-2 | DECIMAL FLOAT (16) BINARY FLOAT (53) | L |
In C/C++ gibt es eine noch höhere Genauigkeit ( long double float , das sind im Allg. 10 Byte).
- Weiter
- zum nächsten Kapitel
- Zurück
- zum vorherigen Kapitel
- zum Anfang dieses Kapitels
- zum Inhaltsverzeichnis
- zum Anfang dieses Kapitels