ASCII (tekenset)
ASCII (American Standard Code for Information Interchange) is een standaard om Latijnse letters, cijfers, leestekens en enkele andere symbolen en stuurcodes te representeren en aan ieder teken in die reeks een geheel getal te koppelen, waarmee dat teken kan worden aangeduid. De code werd ontworpen door Bob Bemer.
Inhoud |
Standaard-ASCII[bewerken]
De standaard ASCII-tabel (later ook wel ASCII-I[1] genoemd) bestaat uit twee delen: de 95 zichtbare tekens (hoofdletters en kleine letters, cijfers, leestekens, de spatie en enkele andere symbolen), en 33 stuurcodes. De stuurcodes representeren geen zichtbare tekens, maar zijn opdrachten aan uitvoerapparaten of geven informatie over de data die verstuurd worden.
Sommige van deze codes herinneren nog aan het feit dat de uitvoer vroeger meestal niet op een beeldscherm werd getoond, maar met een teletype, een soort door een computer aangestuurde typemachine, op papier werd afgedrukt. Het teken bell deed dan ook werkelijk de bel van de teletype rinkelen, en een carriage return deed de wagen teruglopen, net als bij een typemachine.
De laatste code, DEL, bestaat binair uit 7 enen. Deze code werd bij het lezen van ponsband genegeerd, zodat deze kon worden gebruikt om een fout te herstellen: als men per ongeluk het verkeerde teken had ingeponst, ponste men er eenvoudig een DEL (met overal gaten) overheen, zodat het foute teken werd genegeerd.
De 128 ASCII-codes zijn te zien in de tabel hieronder.
Tabel van ASCII-codes[bewerken]
| Besturingscodes | spatie, afdrukbare tekens en delete | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Dec | Oct | Hex | Binair | Teken | Dec | Oct | Hex | Binair | Teken | Dec | Oct | Hex | Binair | Teken | Dec | Oct | Hex | Binair | Teken | |||
| 0 | 000 | 00 | 0000000 | NUL (Null) | 32 | 040 | 20 | 0100000 | SP | 64 | 100 | 40 | 1000000 | @ | 96 | 140 | 60 | 1100000 | ` | |||
| 1 | 001 | 01 | 0000001 | SOH (Start of Header) | 33 | 041 | 21 | 0100001 | ! | 65 | 101 | 41 | 1000001 | A | 97 | 141 | 61 | 1100001 | a | |||
| 2 | 002 | 02 | 0000010 | STX (Start of Text) | 34 | 042 | 22 | 0100010 | " | 66 | 102 | 42 | 1000010 | B | 98 | 142 | 62 | 1100010 | b | |||
| 3 | 003 | 03 | 0000011 | ETX (End of Text) | 35 | 043 | 23 | 0100011 | # | 67 | 103 | 43 | 1000011 | C | 99 | 143 | 63 | 1100011 | c | |||
| 4 | 004 | 04 | 0000100 | EOT (End of Transmission) | 36 | 044 | 24 | 0100100 | $ | 68 | 104 | 44 | 1000100 | D | 100 | 144 | 64 | 1100100 | d | |||
| 5 | 005 | 05 | 0000101 | ENQ (Enquiry) | 37 | 045 | 25 | 0100101 | % | 69 | 105 | 45 | 1000101 | E | 101 | 145 | 65 | 1100101 | e | |||
| 6 | 006 | 06 | 0000110 | ACK (Acknowledgment) | 38 | 046 | 26 | 0100110 | & | 70 | 106 | 46 | 1000110 | F | 102 | 146 | 66 | 1100110 | f | |||
| 7 | 007 | 07 | 0000111 | BEL (Bell (geluidssignaal)) | 39 | 047 | 27 | 0100111 | ' | 71 | 107 | 47 | 1000111 | G | 103 | 147 | 67 | 1100111 | g | |||
| 8 | 010 | 08 | 0001000 | BS (Backspace) | 40 | 050 | 28 | 0101000 | ( | 72 | 110 | 48 | 1001000 | H | 104 | 150 | 68 | 1101000 | h | |||
| 9 | 011 | 09 | 0001001 | HT (Horizontal Tab) | 41 | 051 | 29 | 0101001 | ) | 73 | 111 | 49 | 1001001 | I | 105 | 151 | 69 | 1101001 | i | |||
| 10 | 012 | 0A | 0001010 | LF (Line Feed (nieuwe regel)) | 42 | 052 | 2A | 0101010 | * | 74 | 112 | 4A | 1001010 | J | 106 | 152 | 6A | 1101010 | j | |||
| 11 | 013 | 0B | 0001011 | VT (Vertical Tab) | 43 | 053 | 2B | 0101011 | + | 75 | 113 | 4B | 1001011 | K | 107 | 153 | 6B | 1101011 | k | |||
| 12 | 014 | 0C | 0001100 | FF (Form Feed) | 44 | 054 | 2C | 0101100 | , | 76 | 114 | 4C | 1001100 | L | 108 | 154 | 6C | 1101100 | l | |||
| 13 | 015 | 0D | 0001101 | CR (Carriage Return (wagenterugloop)) | 45 | 055 | 2D | 0101101 | - | 77 | 115 | 4D | 1001101 | M | 109 | 155 | 6D | 1101101 | m | |||
| 14 | 016 | 0E | 0001110 | SO (Shift Out) | 46 | 056 | 2E | 0101110 | . | 78 | 116 | 4E | 1001110 | N | 110 | 156 | 6E | 1101110 | n | |||
| 15 | 017 | 0F | 0001111 | SI (Shift In) | 47 | 057 | 2F | 0101111 | / | 79 | 117 | 4F | 1001111 | O | 111 | 157 | 6F | 1101111 | o | |||
| 16 | 020 | 10 | 0010000 | DLE (Data Link Escape) | 48 | 060 | 30 | 0110000 | 0 | 80 | 120 | 50 | 1010000 | P | 112 | 160 | 70 | 1110000 | p | |||
| 17 | 021 | 11 | 0010001 | DC1 (Device Control 1 (XON)) | 49 | 061 | 31 | 0110001 | 1 | 81 | 121 | 51 | 1010001 | Q | 113 | 161 | 71 | 1110001 | q | |||
| 18 | 022 | 12 | 0010010 | DC2 (Device Control 2) | 50 | 062 | 32 | 0110010 | 2 | 82 | 122 | 52 | 1010010 | R | 114 | 162 | 72 | 1110010 | r | |||
| 19 | 023 | 13 | 0010011 | DC3 (Device Control 3 (XOFF)) | 51 | 063 | 33 | 0110011 | 3 | 83 | 123 | 53 | 1010011 | S | 115 | 163 | 73 | 1110011 | s | |||
| 20 | 024 | 14 | 0010100 | DC4 (Device Control 4) | 52 | 064 | 34 | 0110100 | 4 | 84 | 124 | 54 | 1010100 | T | 116 | 164 | 74 | 1110100 | t | |||
| 21 | 025 | 15 | 0010101 | NAK (Negative Acknowledgement) | 53 | 065 | 35 | 0110101 | 5 | 85 | 125 | 55 | 1010101 | U | 117 | 165 | 75 | 1110101 | u | |||
| 22 | 026 | 16 | 0010110 | SYN (Synchronous Idle) | 54 | 066 | 36 | 0110110 | 6 | 86 | 126 | 56 | 1010110 | V | 118 | 166 | 76 | 1110110 | v | |||
| 23 | 027 | 17 | 0010111 | ETB (End of Transmission Block) | 55 | 067 | 37 | 0110111 | 7 | 87 | 127 | 57 | 1010111 | W | 119 | 167 | 77 | 1110111 | w | |||
| 24 | 030 | 18 | 0011000 | CAN (Cancel) | 56 | 070 | 38 | 0111000 | 8 | 88 | 130 | 58 | 1011000 | X | 120 | 170 | 78 | 1111000 | x | |||
| 25 | 031 | 19 | 0011001 | EM (End of Medium) | 57 | 071 | 39 | 0111001 | 9 | 89 | 131 | 59 | 1011001 | Y | 121 | 171 | 79 | 1111001 | y | |||
| 26 | 032 | 1A | 0011010 | SUB (Substitute) | 58 | 072 | 3A | 0111010 | : | 90 | 132 | 5A | 1011010 | Z | 122 | 172 | 7A | 1111010 | z | |||
| 27 | 033 | 1B | 0011011 | ESC (Escape) | 59 | 073 | 3B | 0111011 | ; | 91 | 133 | 5B | 1011011 | [ | 123 | 173 | 7B | 1111011 | { | |||
| 28 | 034 | 1C | 0011100 | FS (File Separator) | 60 | 074 | 3C | 0111100 | < | 92 | 134 | 5C | 1011100 | \ | 124 | 174 | 7C | 1111100 | | | |||
| 29 | 035 | 1D | 0011101 | GS (Group Separator) | 61 | 075 | 3D | 0111101 | = | 93 | 135 | 5D | 1011101 | ] | 125 | 175 | 7D | 1111101 | } | |||
| 30 | 036 | 1E | 0011110 | RS (Record Separator) | 62 | 076 | 3E | 0111110 | > | 94 | 136 | 5E | 1011110 | ^ | 126 | 176 | 7E | 1111110 | ~ | |||
| 31 | 037 | 1F | 0011111 | US (Unit Separator) | 63 | 077 | 3F | 0111111 | ? | 95 | 137 | 5F | 1011111 | _ | 127 | 177 | 7F | 1111111 | DEL | |||
Afwijkingen[bewerken]
In veel talen heeft men niet genoeg aan 26 letters. Daarom werden in sommige talen wijzigingen in de tabel aangebracht. In de Duitse tabel ontbreken de 'overbodige' tekens [\] en {|} - ze zijn vervangen door äöü en ÄÖÜ. In de Britse tabel is het hekje (#) vervangen door een pondteken (£).
Dit gaf wel eens problemen met het programmeren van computers, omdat de 'overbodige' tekens daar wel degelijk gebruikt worden. Een ander probleem ontstond als de verkeerde karaktertabel werd gebruikt; zo was het niet goed mogelijk de Duitse teletekstpagina's te bekijken met een televisietoestel dat gemaakt was voor een ander land.
Uitbreiding met 8e bit[bewerken]
ASCII is een 7-bits code, zodat er 27 = 128 ASCII-codes mogelijk zijn. De meeste computers werken echter met 8-bits codes (bytes). De 8e bit werd traditioneel gebruikt voor foutdetecterende codes (in dit geval een pariteitsbit) en andere apparaatspecifieke toepassingen. In eerste instantie bestond de extra verzameling beschikbare tekens uit gangbare accenten op het Latijnse schrift en diverse grafische tekens (zoals blokken, lijnen en rasters) waarmee onder meer goed ogende menu's getoond konden worden. Deze eerste uitgebreide tekenverzameling stond bekend als de ASCII-II tabel.[1]
Omdat in landen buiten de Verenigde Staten behoefte was aan extra tekens (zoals andere letters, letters met accenten, valutasymbolen, figuurtjes) werd het aantal mogelijke tekens vergroot door ook de 8e bit te gebruiken (dit gaf tweemaal zo veel mogelijkheden, namelijk 28 = 256). Zo ontstonden de extended ASCII-tekenverzamelingen. Extended ASCII is trouwens niet één bepaalde standaard, evenmin als primair ASCII (zie de vorige paragraaf), maar een verzamelnaam voor de verschillende tekenrepresentaties die de 95 afdrukbare ASCII-tekens als basis hebben, zoals de ANSI-tekensets.
De bekendste uitbreiding, die nog steeds ondersteund wordt door de karaktergenerator op een videokaart, omvat:
| Dec | Oct | Hex | Binair | Code |
|---|---|---|---|---|
| 128-154 | 200-232 | 80-9A | 10000000-10011010 | diverse letters met diakrieten |
| 155-159 | 233-237 | 9B-9F | 10011011-10011111 | valutasymbolen |
| 160-168 | 240-250 | A0-A8 | 10100000-10101000 | letters met diakrieten (Spaans) |
| 169-170 | 251-252 | A9-AA | 10101001-10101010 | negatiesymbolen |
| 171-172 | 253-254 | AB-AC | 10101011-10101100 | breuken |
| 173 | 255 | AD | 10101101 | omgekeerd uitroepteken |
| 174-175 | 256-257 | AE-AF | 10101110-10101111 | Franse aanhalingstekens |
| 176-178 | 260-262 | B0-B2 | 10110000-10110010 | rasters |
| 179-218 | 263-332 | B3-DA | 10110011-11011010 | lijntjes |
| 219-223 | 333-337 | DB-DF | 11011011-11010000 | blokjes |
| 224-253 | 340-375 | E0-FD | 11100000-11111101 | wiskundige symbolen |
| 254-255 | 376-377 | FE-FF | 11111110-11111111 | blokjes |
Trivia[bewerken]
- De cijfers bestaan uit hun binaire representatie, voorafgegaan door '011'.
- De letters staan op alfabetische volgorde, waardoor het eenvoudig is een tekst te alfabetiseren. Dit geldt niet voor de tekens met accenten die later zijn toegevoegd.
- Bovenkast verschilt slechts één bit (bit 5) met onderkast; dit maakt dat omzetten van kast en kastloos vergelijken een bit-operatie wordt en daardoor erg snel. Dit geldt niet voor Unicode, waarbij het verschil vaak in bit 0 is.
- Met behulp van de vorm van de tekens kunnen afbeeldingen gemaakt worden, dit heet ASCII-art.
Zie ook[bewerken]
Bronnen, noten en/of referenties
|