ASCII (tekenset)

American Standard Code for Information Interchange toont tekens met zeven bits

ASCII (American Standard Code for Information Interchange), ook US-ASCII en ANSI_X3.4-1968 genoemd,[1] is een standaard 7-bits-tekencodering om Latijnse letters, cijfers, leestekens en enkele andere tekens 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 een commissie met o.a. Hugh McGregor Ross en Bob Bemer.

Standaard-ASCII[bewerken | brontekst bewerken]

De standaard ASCII-tabel (later ook wel ASCII-I[2] genoemd) bestaat uit de 94 zichtbare tekens (hoofdletters en kleine letters, cijfers, leestekens en enkele andere symbolen), de spatie, en 33 stuurcodes. De stuurcodes representeren geen zichtbare tekens, maar zijn opdrachten aan uitvoerapparaten of geven informatie over de gegevens die verstuurd worden.

Van de stuurcodes komen met name carriage return en/of line feed in vrijwel elke platte tekst voor.

Telex met ponsband (links)

De ASCII codes zijn oorspronkelijk ontworpen voor telexcommunicatie. Sommige stuurcodes herinneren er nog aan dat de uitvoer vroeger niet op een beeldscherm werd getoond, maar met een TTY, een door een computer aangestuurde soort 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 zeven 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 verkeerde teken werd gewist.

De 128 ASCII-codes zijn te zien in de tabellen rechts en onder.

De 94 zichtbare tekens en de spatie, en hun representaties als byte, zijn inmiddels exact hetzelfde overgenomen in uitbreidingen zoals Windows-1252, ISO 8859-1 en UTF-8.

Tabel van ASCII-codes[bewerken | brontekst 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 (Acknowledgement) 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

Bijzonderheden[bewerken | brontekst bewerken]

Algemeen[bewerken | brontekst 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, waar geen vast verschil is en bovendien gebruiken niet alle talen dezelfde omzetting.

Internationaal[bewerken | brontekst 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 (£).

Software[bewerken | brontekst bewerken]

Het vervangen van tekens gaf weleens problemen met het programmeren van computers, omdat de 'overbodige' tekens daar wel 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 | brontekst bewerken]

Alle mogelijkheden bij het gebruik van 9 bits

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 pariteit 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.[2]

Omdat in landen buiten de Verenigde Staten behoefte was aan extra tekens, zoals andere letters, letters met accenten, valutasymbolen en 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 Windows-1252.

De bekendste uitbreiding is die van de originele IBM PC, genaamd code page 437. Deze wordt nog steeds ondersteund door de tekengenerator op een videokaart en 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

ASCII-art[bewerken | brontekst bewerken]

  • Met behulp van de vorm van de tekens kunnen afbeeldingen gemaakt worden, dit heet ASCII-art. In het (ongemodificeerde) spel Dwarf Fortress is de gehele spelwereld uit ASCII tekens opgebouwd.

Zie ook[bewerken | brontekst bewerken]