448
Boolean, boolean, boolZahlen 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.
unsigned char, unsigned short, unsigned intProblem: 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
byte, short, long, intProblem: 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!
Noch zu tun: Beispiele und Rechnungen...
REAL, Float, Double, long double
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 |
CharEs gibt zwei weitere häufig genannte Zeichencodes, die praktisch zeichengleich sind:
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 |
String, string, char[]