Was ist eine ASCII Tabelle, wie liest man diese und wofür wird diese benötigt?
Eine Erklärung von Null bitte.
4 Antworten
Eine ASCII Tabelle ist einfach eine Auflistung der Buchstaben, Zeichen und Ziffern des ASCII Codes. Da kann man dann nachgucken welche Nummer ein bestimmtes Zeichen hat.
Der ASCII Code ist eine Standardisierung die 1963 eingeführt wurde.
Computer können nur Zahlen verarbeiten. Wenn man aber zum Beispiel etwas drucken will, dann möchte man ja für den Menschen lesbare Sachen ausdrucken, nicht nur eine Folge von Binärzahlen.
Also muss man die Zahlen im Computer einem Buchstaben, Ziffer oder Zeichen zuordnen.
Das wurde erstmalig mit Fernschreibern gemacht, die Dinger gibt es schon seit über 100 Jahren während digitale Computer erst erfolgreich kurz vor dem 2. Weltkrieg (Zuse Z3), während und dann erst richtig nach dem 2. WK erfunden und gebaut wurden.
Ein Fernschreiber übersetzt eine gedrückte Taste in eine Folge von Einsen und Nullen, sendet die als "Strom fließt" und "Strom unterbrochen" über eine Telegraphenleitung und ein zweites Gerät empfängt die Strompulse und druckt dann die entsprechenden Zeichen auf Papier.
Fernschreiber benutzen den CCITT-2 Code, auch als "Murray Code" bekannt. Das ist eine Verbesserung des Baudot Codes (CCITT-1) wo ein Mensch 5 Tasten gleichzeitig drücken musste um ein Zeichen zu codieren. Das wurde vor allem für Börsenkurse verwendet, das kennt man aus ganz alten Filmen (und Mickey Maus Comics) wo ein kleiner Drucker unter einer Glaskuppel einen Papierstreifen ausspuckt auf dem die neusten Börsenkurse stehen. Ein Mensch drückt für jeden Buchstaben und Ziffern entsprechende Tasten und die sind mit mehreren "Börsenticker" Geräten verbunden.
Das hat der Murray dann automatisiert, statt sich merken zu müssen welche der 5 Tasten (2 linke Hand, 3 rechte Hand) welches Zeichen drucken hat man dann eine Tastatur wie an einer Schreibmaschine.
Der Baudot und Murray Code hat nur die 26 Buchstaben, 10 Ziffern und wenige Satzzeichen. Baudot damit der arme Mensch nur 5 Tasten drücken muss, Murray um die masxchinelle Übertragungsgeschwindigkeit möglichst schnell zu haben.
5 bit reichen nicht aus, daher gibt es Umschaltzeichen die bei der Fernschreiber Schreibmaschine "Shift" an und aus machen. Es werden nur kleinbuchstaben gedruckt und mit "shift" an werden Ziffern und Satzzeichen gedruckt. Jede Type hat also einen Buchstaben und eine Ziffer/Satzzeichen und Shift bestimmt ob Buchstabe oder Ziffer gedruckt wird.
Die ersten Computer benutzten dieses System, sogar die Zuse Z25 (1960er) nutzte das noch.
Aber bereits Mitte der 1950er Jahre stiegen die Ansprüche. Man wollte Groß und Kleinschreibung und mehr Zeichen wie zum Beispiel $%& und Anführungszeichen haben. Und dazu braucht man mindestens 7 bits. Der Murray Code konnte ja nur 32 verschiedene Werte übertragen und trickste mit einer Umschaltung so dass knapp 60 verschiedene Sachen übertragen werden konnte. Das entspräche 6 bit mit 64 verschiedenen Möglichkeiten. Aber alleine für Groß und Kleinschreibung ist das noch zu wenig, also mussten es mindestens 7 bit sein!
Mit 7 bit kann man dann 128 verschiedene Zeichen übertragen. Ein paar Zeichen braucht man ja für die Druckersteuerung, also Wagenrücklauf und Zeilenvorschub.
In den 1950ern hatten die Computerhersteller dann eigene Codetabellen und man konnte nur den Drucker des selben Herstellers verwenden damit der die richtigen Zeichen ausdruckt. Auch konnte man keine Texte auf anderen Computersystemen übernehmen da ja jeder Computer die Werte anders interpretierte. Wenn der eine Computer "A" sagt, versteht der andere Computer dann zum Beispiel "$".
Und um den Informationsaustausch zwischen verschiedenen Computern zu gewährleisten und damit man jeden Drucker (und später auch Videoterminal Bildschirm) an jeden Computer anschließen konnte, haben die großen amerikanischen Hersteller von Computern (IBM, Xerox usw.) sich zusammengetan und einen einheitlichen Standard geschaffen, den "American Standard Code for Information Interchange", also kurz ASCII.
Und der sieht dann so aus:
Oct Dec Hex Char Oct Dec Hex Char
────────────────────────────────────────────────────────────────────────
000 0 00 NUL '\0' (null character) 100 64 40 @
001 1 01 SOH (start of heading) 101 65 41 A
002 2 02 STX (start of text) 102 66 42 B
003 3 03 ETX (end of text) 103 67 43 C
004 4 04 EOT (end of transmission) 104 68 44 D
005 5 05 ENQ (enquiry) 105 69 45 E
006 6 06 ACK (acknowledge) 106 70 46 F
007 7 07 BEL '\a' (bell) 107 71 47 G
010 8 08 BS '\b' (backspace) 110 72 48 H
011 9 09 HT '\t' (horizontal tab) 111 73 49 I
012 10 0A LF '\n' (new line) 112 74 4A J
013 11 0B VT '\v' (vertical tab) 113 75 4B K
014 12 0C FF '\f' (form feed) 114 76 4C L
015 13 0D CR '\r' (carriage ret) 115 77 4D M
016 14 0E SO (shift out) 116 78 4E N
017 15 0F SI (shift in) 117 79 4F O
020 16 10 DLE (data link escape) 120 80 50 P
021 17 11 DC1 (device control 1) 121 81 51 Q
022 18 12 DC2 (device control 2) 122 82 52 R
023 19 13 DC3 (device control 3) 123 83 53 S
024 20 14 DC4 (device control 4) 124 84 54 T
025 21 15 NAK (negative ack.) 125 85 55 U
026 22 16 SYN (synchronous idle) 126 86 56 V
027 23 17 ETB (end of trans. blk) 127 87 57 W
030 24 18 CAN (cancel) 130 88 58 X
031 25 19 EM (end of medium) 131 89 59 Y
032 26 1A SUB (substitute) 132 90 5A Z
033 27 1B ESC (escape) 133 91 5B [
034 28 1C FS (file separator) 134 92 5C \ '\\'
035 29 1D GS (group separator) 135 93 5D ]
036 30 1E RS (record separator) 136 94 5E ^
037 31 1F US (unit separator) 137 95 5F _
040 32 20 SPACE 140 96 60 `
041 33 21 ! 141 97 61 a
042 34 22 " 142 98 62 b
043 35 23 # 143 99 63 c
044 36 24 $ 144 100 64 d
045 37 25 % 145 101 65 e
046 38 26 & 146 102 66 f
047 39 27 ' 147 103 67 g
050 40 28 ( 150 104 68 h
051 41 29 ) 151 105 69 i
052 42 2A * 152 106 6A j
053 43 2B + 153 107 6B k
054 44 2C , 154 108 6C l
055 45 2D - 155 109 6D m
056 46 2E . 156 110 6E n
057 47 2F / 157 111 6F o
060 48 30 0 160 112 70 p
061 49 31 1 161 113 71 q
062 50 32 2 162 114 72 r
063 51 33 3 163 115 73 s
064 52 34 4 164 116 74 t
065 53 35 5 165 117 75 u
066 54 36 6 166 118 76 v
067 55 37 7 167 119 77 w
070 56 38 8 170 120 78 x
071 57 39 9 171 121 79 y
072 58 3A : 172 122 7A z
073 59 3B ; 173 123 7B {
074 60 3C < 174 124 7C |
075 61 3D = 175 125 7D }
076 62 3E > 176 126 7E ~
077 63 3F ? │ 177 127 7F DEL
Sendet man also den Wert 65 an einen Drucker oder an ein Videoterminal, dann wird das Zeichen "A" gedruckt. Sendet man eine 48, erscheint das Zeichen "0".
Die Tabelle dient dann einfach nur dazu, dass der Mensch nachgucken kann welche Zahl für welches Zeichen zuständig ist.
Heutzutage tippt man ja auf der Tastatur und in Programmen schreibt man in Klartext rein was gedruckt bzw. geschrieben werden soll. Aber wenn man einen Drucker steuern will, dann muss man gucken welche Ziffer man verwenden muss um zum Beispiel einen Seitenvorschub aus zu lösen (Hier Dezimal-Nummer 12 in der Tabelle). Aber früher codierte man Programme oft durch löten von Drahtbrücken oder dem lochen von Papierstreifen. Da musste man dann wissen welchen Wert man für welches Zeichen oder welche Funktion des Druckers braucht.
Oft werden ASCII Tabellen so abgebildet:
2 3 4 5 6 7 30 40 50 60 70 80 90 100 110 120
------------- ---------------------------------
0: 0 @ P ` p 0: ( 2 < F P Z d n x
1: ! 1 A Q a q 1: ) 3 = G Q [ e o y
2: " 2 B R b r 2: * 4 > H R \ f p z
3: # 3 C S c s 3: ! + 5 ? I S ] g q {
4: $ 4 D T d t 4: " , 6 @ J T ^ h r |
5: % 5 E U e u 5: # - 7 A K U _ i s }
6: & 6 F V f v 6: $ . 8 B L V ` j t ~
7: ' 7 G W g w 7: % / 9 C M W a k u DEL
8: ( 8 H X h x 8: & 0 : D N X b l v
9: ) 9 I Y i y 9: ' 1 ; E O Y c m w
A: * : J Z j z
B: + ; K [ k {
C: , < L \ l |
D: - = M ] m }
E: . > N ^ n ~
F: / ? O _ o DEL
Die linke Tabelle ist in Hexadezimal. Das A wäre an der Position 1-4 was dann die HEX-Zahl 14 ist, was dann Dezimal 65 ist.
Während man die HEX Zahlen einfach so zusammen stellen muss, muss man bei der rechten Tabelle die Dezimal darstellt richtig rechnen. Ein X wäre 8 + 80, also die Dezimalzahl 88.
Emails sind aus historischen Gründen auch heute noch in 7-bit codiert. Einfach weil in den 1980ern als das Email Format erfunden wurde (Email kam vor dem Internet) gab es noch viele Computer die nur 7-bit verstanden haben.
Das merkt man leicht daran, dass wenn man eine 1MB große Datei (die ja 8-bit hat) in eine Email einfügt, die Email plötzlich um 1,2MB größer wird. Die Datei muss in 7-bit umkodiert werden und das verschwendet Speicherplatz.
Emails funktionieren auch heute noch auf ASCII, alle nicht-ASCII Zeichen (ÖÄÜß usw), Formatierungen usw. müssen dann darin aufwändig codiert werden.
Daten sind heutzutage immer in 8-bit unterteilt. Daher merkt sich ein Computer für jedes Zeichen auch 8 bit. Das ist am einfachsten für den Computer. Damit wäre also ein Bit verschwendet. Deswegen gibt es die "Erweiterte ASCII Seite". Das ist eine zweite Tabelle mit andern Zeichen, komplett gefüllt mit Sonderzeichen. Damit ist es erst möglich, dass ein PC auch Deutsche, Französische und andere Sonderzeichen darstellen kann. Die ist aber nicht Standard!
in Deutschland ist im PC die Erweiterte Codepage 850 voreingestellt. https://de.wikipedia.org/wiki/Codepage_850, während in den USA die 437 standard war.
So bekam man dann Länderspezifische Zeichen oft falsch auf dem Bildschirm dargestellt oder falsch ausgedruckt. Oft musste man dann die Codepage in der "CONFIG.SYS" umschreiben und den Computer neu starten wenn man ein ausländisches Programm verwendete.
Das wurde dann mit "Unicode" vereinheitlicht. Hier werden dann 16-bit (UTF-16) verwendet um jedes Zeichen zu codieren, man hat also quasi 256 erweiterte ASCII Zeichensätze sofort für jedes Zeichen unabhängig zur Verfügung.
Um Platz zu sparen gibt es UTF-8 was in der Linuxwelt bevorzugt wird. Da gibt es nur die originalen 128 ASCII Zeichen und ein Umschaltzeichen. Das besagt, dass das nächste Zeichen die Codepage spezifiziert und das übernächste dann das eigentliche Zeichen. So kommt man meistens mit 8-bit pro Zeichen aus, braucht dann aber 24bits für Sonderzeichen während UTF-16 immer genau 16 bits pro Zeichen verbraucht.
Die ASCII-Tabelle hat die "wichtigsten Zeichen" gespeichert, die man benutzt, wobei einige davon auch schon etwas veraltet sind. Dabei sind insgesamt 256 Zeichen inbegriffen (von 0-255). Warum 256? Weil das genau 8 Bit, also ein Byte, sind und man damit die Möglichkeit hat, 256 verschiedene "Zeichen" darzustellen. Diese werden mit 0 und 1 in der "Computersprache" gespeichert.
Schöne Grüße :)
Das ist nicht richtig. ASCII benutzt nur 7 bit und hat damit 2^7 = 128 Zeichen. Das achte Bit wird bspw. für Paritäts-Checks benutzt (es wird so gesetzt, dass das gesamte Byte eine gerade (ungerade) Anzahl an 1en hat. Dann kann man hinterher überprüfen, ob es Datenfehler gibt, nämlich wenn die Anzahl an 1en ungerade (gerade) ist).
Die ASCII-Tabelle (gesprochen: „Aski“) ist eine Liste von Zeichen und deren numerischen Repräsentationen, die im Computersystem verwendet werden. Sie dient als Grundlage, um Zeichen wie Buchstaben, Zahlen, Satzzeichen und Steuerzeichen (z. B. Zeilenumbrüche) in Computern zu codieren und zu verarbeiten.
ASCII steht für American Standard Code for Information Interchange, also ein Standard für den Austausch von Informationen.
Wie ist die ASCII-Tabelle aufgebaut?Numerischer Code
- Jedes Zeichen in der ASCII-Tabelle hat eine eindeutige Nummer, den sogenannten ASCII-Wert. Diese Werte reichen von 0 bis 127 (im ursprünglichen Standard).
Zeichen
- Jedes dieser numerischen Werte repräsentiert ein spezifisches Zeichen. Dazu gehören: Steuerzeichen (0–31): Unsichtbare Zeichen, wie Zeilenumbrüche oder Tabulatoren. Druckbare Zeichen (32–126): Sichtbare Zeichen, wie Buchstaben, Zahlen und Satzzeichen. Erweiterte Zeichen (128–255 in erweiterten Standards wie ISO 8859-1): Sonderzeichen, Umlaute und weitere Symbole.
Textdarstellung
- Computer verstehen nur Zahlen. Die ASCII-Tabelle erlaubt es, Text (z. B. Buchstaben) in Zahlen umzuwandeln, die der Computer verarbeiten kann. Beispiel: Wenn du „ABC“ tippst, speichert der Computer dies als die Werte 65, 66 und 67.
Datenkommunikation
- Bei der Übertragung von Daten (z. B. in E-Mails oder im Internet) wird ASCII verwendet, um sicherzustellen, dass Zeichen standardisiert dargestellt werden.
Programmierung:
- ASCII-Werte werden häufig in Programmen verwendet, um Zeichen zu manipulieren, z. B.: python:
# Buchstabe in ASCII-Wert umwandeln:
print(ord('A')) # Ausgabe: 65
# ASCII-Wert in Buchstabe umwandeln:
print(chr(65)) # Ausgabe: A
Historischer Kontext:
- ASCII war einer der ersten Standards für Textcodierung und hat die Basis für modernere Codierungen wie UTF-8 gelegt.
Jedes dargestellte Zeichen, wie in diesem Text, wird einer Zahl 0 ... 255 zugeordnet. Mit diesen Zahlenwerten arbeitet der Computer.
Nur welche Zahl gehört zu welchem Zeichen?
Die oft benutzte Zuordnungstabelle ist ASCII. Früher gab es auch andere wie EBCDIC oder so.
In ASCII ist festgelegt, dass
- A = 65 (EBCDIC: 193)
- a = 97 (EBCDIC: 129)
- * = 42 (EBCDIC: 92)
- 7 = 55 (EBCDIC: 247)
- ...
Es sind nur die Zahlen 0 ... 127 festgelegt, wobei 0 ... 31 Sonderwerte ohne darstellbare Zeichen sind.