Was ist eine ASCII Tabelle, wie liest man diese und wofür wird diese benötigt?

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.

Woher ich das weiß:Berufserfahrung

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 :)


malte314  27.01.2025, 20:38

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.
Verwendung der ASCII-Tabelle

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.