US-Darstellung der Kommata (mit Punkt) und Tausender-Trennzeichen (mit Komma) z.B. 1,000.0 für eintausendkommanull.
C++ Typen für 32-Bit Betriebssystem, genaue Umsetzung ist Compiler und vom Betriebssystem abhängig!
Delphi Typen für 32-Bit Betriebssystem, genaue Umsetzung ist Compiler und vom Betriebssystem abhängig!
Datentyp | Beschreibung | Bits | Wertebereich | Java-Typ | C++-Typ | Delphi / Pascal-Typ |
---|---|---|---|---|---|---|
Void | leer / ohne Referenz | ? | - | void / null | void | - / NIL |
Boolean | Log. Wert | 8 | true, false | boolean | bool | BOOLEAN |
Char | Zeichen | 8 | 0..255 | - | unsigned char | CHAR |
16 | \u0000..\uFFFF; Unicode | char | - | - | ||
Byte | ganze Zahl | 8 | -128..127 | byte | signed char; char | SHORTINT |
pos. ganze Zahl | 0..255 | - | unsigned char | BYTE | ||
Short | ganze Zahl | 16 | -32,768..32,767 | short | short int, short | SMALLINT |
pos. ganze Zahl | 0..65535 | - | unsigned short | WORD | ||
Integer | ganze Zahl | 32 | -2,147,483,648..2,147,483,647 | int | int, long | INTEGER, LONGINT |
pos.ganze Zahl | 0..4,294,967,295 | - | unsigned int | CARDINAL | ||
Long | ganze Zahl | 64 | -263..263-1 | long | - | - |
Float | IEEE 754 Gleitkommazahl einfache Genauigkeit |
32 | ca. +-1.4 * 10-45 .. +-3.4 * 1038 Genauigkeit ca. 7 Stellen |
float | float | SINGLE |
REAL | Gleitkommazahl Delphi / Pascal Ist ineffizient! |
48 | ca. +-2.9 * 10-39 .. +-1.7 * 1038 Genauigkeit ca. 11 Stellen |
- | - | REAL |
Double | IEEE 754 Gleitkommazahl doppelte Genauigkeit |
64 | ca. +-4.9 * 10-324 .. +-1.8 * 10308 Genauigkeit ca. 15 Stellen |
double | double | DOUBLE |
Long Double | Gleitkommazahl | 80 | ca. +-3.4 * 10-4932 .. +-1.1 * 104932 Genauigkeit ca. 19 Stellen |
- | long double | EXTENDED |
Zahlen werden im Rechner Im Dualsystem dargestellt. Dabei ergibt die Anzahl der Bits die Grösse der größten darstellbaren Zahl, den darstellbaren Zahlenbereich, zunächst für die vorzeichenlosen Zahlen (natürlichen Zahlen):
Bits | 1 | 2 | 3 | 4 | 8 | 16 | 32 | n |
---|---|---|---|---|---|---|---|---|
Bezeichnung | Bit | - | - | Nibble | Byte | Word | DWord | Allgemein |
Anzahl der Zahlen | 2 | 4 | 8 | 16 | 256 | 65.536 | 4.294.967.296 | 2n |
pos. Zahlenbereich | 0..1 | 0..3 | 0..7 | 0..15 | 0..255 | 0..65.535 | 0..4.294.967.295 | 0..2n-1 |
Info: Darstellung in verschiedenen Zahlensystemen | ||||||||
Grösste Zahl in Dual | 12 | 112 | 1112 | 11112 | 1111 11112 | 1111 1111 1111 11112 | 32 Einsen | |
Grösste Zahl in Oktal | 18 | 38 | 78 | 178 | 3778 | 1777778 | ||
Grösste Zahl in Hex | 116 | 316 | 716 | F16 | FF16 | FFFF16 | FFFF FFFF16 |
Info: Die vorzeichenlosen Zahlen kann man mit den natürlichen Zahlen assoziieren, aber Achtung: Digitale Systeme haben immer nur endlich viel Speicherplatz, es gibt jedoch unendlich viele natürliche Zahlen! Folglich kann immer nur eine (sehr kleine) Teilmenge von IN dargestellt werden.
Problem: Wie können negative Zahlen in digitalen Systemen dargestellt werden?
Lösung: Man verwendet das vorderste Bit als Vorzeichen, Beispiel mit 4 Bit:
|
|
Ist das vorderste Bit 0 ist die Zahl positiv sonst negativ. Diese Darstellung nennt man Vorzeichendarstellung. Die Vorzeichendarstellung hat aber eine Reihe von Nachteilen:
|
|||||||||||||||||
Prinzip für 4 Bit: Zähle von 0 aufwärts bis zu +7, dann gehts bei -8 bis zur -1 weiter.
|
|
|||||||||||||||||
Wenn das vorderste Bit = 1, ist die Zahl negativ! | ||||||||||||||||||
Aufgabe: Berechne in der Zweierkomplementdarstellung 5 + (-3)
Lösung: 5 = 0101; -3 = 1101; 0101+1101 = 10010 =Übertrag weg wegen modulo 16=> 0010 = 2
Wie kann das Zweierkomplement zu einer gegebenen Zahl berechnet werden?
Zahl in Dual umwandeln, bitweise invertieren, dann 1 addieren. Beispiel:
Gesucht -6: 610 = 0110 =invertieren=> 1001 + 1 = 10102
Gesucht -1; 110 = 0001 =invertieren=> 1110 +1 = 11112
Rückumwandeln einer negativen Zahl funktioniert genauso:
Gesucht: 11012 =invertieren=> 0010 + 1 = 0011 = 310
Problem: Wie kann die Zahl 0,5 als Dualzahl dargestellt werden?
Lösung: 0,510 = 0,12 Nach dem Komma stehen im Dualsystem die Brüche 2-m mit m Stelle nach dem Komma.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Darstellung gebrochener Zahlen | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Aufgabe: Gegeben seien 8 Bit für die Darstellung einer gebrochenen Zahl, n=4;m=4. Wie genau kann 1/3 dargestellt werden?
Lösung:
Problem: Wie können bei gegebenem Speicherplatz möglichst viele Reale Zahlen (Gleitkomma-Zahlen) möglichst genau dargestellt werden?
Bsp: 1 200 001 würde doch als 1.2 Mio noch genau genug sein: 1.2 * 106 . Wissenschaftlich 1.2 E6 im Taschenrechner dargestellt.
Genau das ist der Trick, man verwendet beim Kodieren einen Teil der Bits für den Exponenten, hier die 6 und den anderen Teil für die Mantisse, die 1.2.
Die Zahl ergibt sich aus: (-1) *V * (1+m1*2-1+m2*2-2+..+mn*2-n)*2E
32 Bit (einfache Genauigkeit)
Short Real, Float | Bit Nummer | 31 | 30..23 | 22..0 |
---|---|---|---|---|
ca. +-1.4 * 10-45 .. +-3.4 * 1038 Genauigkeit ca. 7 Stellen |
Anzahl Bits | 1 | 8 | 23 |
Bedeutung | V | Exponent | Mantisse |
64 Bit (doppelte Genauigkeit)
Long Real, Double | Bit Nummer | 63 | 62..52 | 51..0 |
---|---|---|---|---|
ca. +-4.9 * 10-324 .. +-1.8 * 10308 Genauigkeit ca. 15 Stellen |
Anzahl Bits | 1 | 11 | 52 |
Bedeutung | V | Exponent | Mantisse |
C++ & Delphi: 80 Bit (erweiterte Genauigkeit)
long double, EXTENDED | Bit Nummer | 79 | 78..64 | 63 | 62..0 |
---|---|---|---|---|---|
ca. +-3,4 * 10-4932 .. +-1,1 * 104932 Genauigkeit ca. 19 Stellen |
Anzahl Bits | 1 | 15 | 1 | 63 |
Bedeutung | V | Exponent | i?? | Mantisse |
Ziel der Normierung ist folgendes Aussehen der Dualzahlen: 1.m1m2m3m4..mn, dabei wird das Komma verschoben, das klappt bei allen Zahlen ungleich null, Beispiel:
1110 = 10112 = 10112 * 20 = 101.12 * 21 = .. = 10.112 * 22 = 1.0112 * 23 = (1+1/4 + 1/8)*8 = 8+2+1 = 11
Da nun vorne immer eine 1 steht kann man die auch weglassen!
American Standard Code for Information Interchange
Dez | Hex | Zeichen | Dez | Hex | Zeichen | Dez | Hex | Zeichen | Dez | Hex | Zeichen | Dez | Hex | Zeichen |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 00 | Nul | 26 | 1A | SUB | 52 | 34 | 4 | 78 | 4E | N | 104 | 68 | h |
1 | 01 | SOH | 27 | 1B | ESC (Escape) | 53 | 35 | 5 | 79 | 4F | O | 105 | 69 | i |
2 | 02 | STX | 28 | 1C | FS | 54 | 36 | 6 | 80 | 50 | P | 106 | 6A | j |
3 | 03 | ETX | 29 | 1D | GS | 55 | 37 | 7 | 81 | 51 | Q | 107 | 6B | k |
4 | 04 | EOT (End Of Transmission) | 30 | 1E | RS | 56 | 38 | 8 | 82 | 52 | R | 108 | 6C | l |
5 | 05 | ENQ | 31 | 1F | US | 57 | 39 | 9 | 83 | 53 | S | 109 | 6D | m |
6 | 06 | ACK | 32 | 20 | SP (Space) | 58 | 3A | : | 84 | 54 | T | 110 | 6E | n |
7 | 07 | BELL (Klingel) | 33 | 21 | ! | 59 | 3B | ; | 85 | 55 | U | 111 | 6F | o |
8 | 08 | BS (Back Space) | 34 | 22 | " | 60 | 3C | < | 86 | 56 | V | 112 | 70 | p |
9 | 09 | Hor. Tabulator | 35 | 23 | # | 61 | 3D | = | 87 | 57 | W | 113 | 71 | q |
10 | 0A | LF (Line Feet) | 36 | 24 | $ | 62 | 3E | > | 88 | 58 | X | 114 | 72 | r |
11 | 0B | Ver. Tabulator | 37 | 25 | % | 63 | 3F | ? | 89 | 59 | Y | 115 | 73 | s |
12 | 0C | FF (Form Feet) | 38 | 26 | & | 64 | 40 | @ | 90 | 5A | Z | 116 | 74 | t |
13 | 0D | CR (Carriage Return) | 39 | 27 | ' | 65 | 41 | A | 91 | 5B | [ | 117 | 75 | u |
14 | 0E | SO | 40 | 28 | ( | 66 | 42 | B | 92 | 5C | \ | 118 | 76 | v |
15 | 0F | SI | 41 | 29 | ) | 67 | 43 | C | 93 | 5D | ] | 119 | 77 | w |
16 | 10 | DLE | 42 | 2A | * | 68 | 44 | D | 94 | 5E | ^ | 120 | 78 | x |
17 | 11 | DC1 | 43 | 2B | + | 69 | 45 | E | 95 | 5F | _ | 121 | 79 | y |
18 | 12 | DC2 | 44 | 2C | , | 70 | 46 | F | 96 | 60 | ' | 122 | 7A | z |
19 | 13 | DC3 | 45 | 2D | - | 71 | 47 | G | 97 | 61 | a | 123 | 7B | { |
20 | 14 | DC4 | 46 | 2E | . | 72 | 48 | H | 98 | 62 | b | 124 | 7C | | |
21 | 15 | NAK | 47 | 2F | / | 73 | 49 | I | 99 | 63 | c | 125 | 7D | } |
22 | 16 | SYN | 48 | 30 | 0 | 74 | 4A | J | 100 | 64 | d | 126 | 7E | ~ |
23 | 17 | ETB | 49 | 31 | 1 | 75 | 4B | K | 101 | 65 | e | 127 | 7F | DEL (Delete) |
24 | 18 | CAN | 50 | 32 | 2 | 76 | 4C | L | 102 | 66 | f | |||
25 | 19 | EM | 51 | 33 | 3 | 77 | 4D | M | 103 | 67 | g |
Es gibt zwei weitere häufig genannte Zeichencodes, die praktisch zeichengleich sind:
Zeichen- kombination |
Bedeutung / übernommenes Zeichen | Zeichen- kombination |
Bedeutung / übernommenes Zeichen |
---|---|---|---|
\a | alert (akustisches oder sichtbares Signal) | \\ | \ (invertierter Schrägstrich, backslash) |
\b | backspace (ein Zeichen zurück) | \' | ' (Hochkomma, quote) |
\n | new line (Neue Zeile) | \" | " (Anführungszeichen) |
\r | carriage return (Wagenrücklauf) | \? | ? (Fragezeichen) |
\t | horizontal tabulator | \ddd | Übernahme des durch die Oktalziffern ddd festgelegten Zeichens |
\v | vertical tabulator | \xhh | Übernahme des durch die Hex-Ziffern hh festgelegten Zeichens |
\f | form feed (vorrücken bis zur nächsten Seite) | \udddd | Unicode-Zeichen in Hexadezimalschreibweise z.B. \u0020 für Leerzeichen |
Fortlaufender Text besteht aus einer Folge von einzelnen Zeichen, einer Zeichenkette (engl.: String). Die Codes der einzelnen Zeichen werden aneinander gefügt.
Beispiel: Der Text "Hallo Welt" wird so dargestellt:
Zeichenfolge | 'H' | 'a' | 'l' | 'l' | 'o' | ' ' | 'W' | 'e' | 'l' | 't' |
---|---|---|---|---|---|---|---|---|---|---|
Dez. Nummer in ASCII | 072 | 097 | 108 | 108 | 111 | 032 | 087 | 101 | 108 | 116 |
Hex in ASCII | 48 | 61 | 6C | 6C | 6F | 20 | 57 | 65 | 6C | 74 |
Bitfolge im Rechner | 01001000 | 01100001 | 01101100 | 01101100 | 01101111 | 00100000 | 01010111 | 01100101 | 01101100 | 01110100 |
Java | Klassisch: C | Moderner: C++ | Kompatibel: mit Delphi / Pascal | |
---|---|---|---|---|
String-Klasse | char-Array | string-Klasse | AnsiString-Klasse entspricht String-Datentyp aus Delphi |
SmallString<n> entspricht String[n] aus Delphi |
String s = "Hugo" | char s[] = "Hugo" | string s = "Hugo" | String s = "Hugo" | SmallString<40> s = "Hugo" |
Strings beginnen mit dem Index 0 | Strings beginnen mit dem Index 1 wie bei Pascal üblich |
Hinweis: Bei Java gibt es noch StringBuffer-Klasse