Les 4: Digitalisering van tekst

In dit hoofdstuk wordt behandeld hoe leestekens kunnen worden voorgesteld door informatie die bestaat uit reeksen 0-en en 1-en, digitale informatie.

Inleiding

Telecommunicatie: al honderden jaren zijn mensen in staat om op afstand met elkaar te communiceren. Indianen gebruikten rooksignalen om boodschappen te verzenden en telegrafen gebruikten Morse-code om boodschappen te verzenden. Hoewel deze vormen van communicatie van elkaar verschillen zijn er ook duidelijke overeenkomsten. Bij elke vorm van communicatie worden karakters (letters, cijfers, leestekens) vertaald in een code. We noemen dit karaktercodering. De code wordt verzonden en door de ontvanger gedecodeerd.

De coderingstechniek heeft sinds de uitvinding van de telegrafie in de 19e eeuw niet stilgestaan. De Morse-code werd vervangen door meer geavanceerde codes. Niet alleen de coderingsmogelijkheden zijn verder ontwikkeld, ook de technische mogelijkheden zijn verder ontwikkeld.

Tegenwoordig communiceren we met het grootste gemak via digitale communicatiemiddelen. Denk alleen al aan de chatmogelijkheden van Whatsapp of aan SMS.

In deze les wordt beschreven hoe de codering van karakters zich vanaf de telegrafie heeft ontwikkeld tot de codering die nu wordt toegepast in computers, de ASCII-codering.

Telegrafie en de Morse-code

Samuel Morse (1791-1872), een Amerikaans kunstenaar, werd in 1832 professor beeldende kunsten aan de universiteit van New York. Zijn interesse voor elektriciteit leidde tot de ontwikkeling van een telegrafische verbinding tussen Washington en Baltimore (1844).

De werking van deze telegrafische verbinding is als volgt. Een apparaat produceert elektrische pulsen (stroompjes). Deze pulsen worden via een koperdraad naar de ontvanger verzonden. Bij de ontvanger worden de pulsen omgezet in korte en lange tikken op een strook papier.

Morse maakte gebruik van korte en lange pulsen en had letters, cijfers en leestekens als volgt gecodeerd (Morse code):

In deze tabel is een “.” een korte puls en een “-“ een lange puls. Bij het verzenden van de letter “A” moest de Morse verzendsleutel achtereenvolgens één keer kort en één keer lang worden ingedrukt.

De ontvanger krijgt de boodschap in de vorm van korte en lange tikken op een strook papier.

Opdracht Een bekende Morse boodschap is SOS (“Save Our Souls”): ... --- ... De eerste boodschap die Samuel Morse in 1844 verstuurde was:

What hath God wrought?

Vertaal deze Morse boodschap.

Morse had zijn codering zo slim mogelijk in elkaar gezet. Letters die vaak gebruikt worden, zoals de letter “E”, worden met weinig pulsen gecodeerd: “.”. Dat maakt de boodschappen zo kort mogelijk.

Merk op dat er geen codering is voor een spatie. Dat was ook niet nodig. Een spatie was bij telegrafie gewoon een korte pauze. De strook van de ontvanger wordt in deze pauzetijd doorgetrokken zodat vanzelf een tussenruimte tussen de karakters ontstaat.

Pas na de uitvinding van de radiogolf in 1888 door de Duitser Heinrich Hertz (1857-1894) en de toepassing daarvan bij radioverbindingen in 1894 door de Italiaan Guglielmo Marconi (1874-1937) kon de Morse code ook via radiogolven verzonden worden. Ook zonder koperdraadverbinding konden de pulsen worden verzonden en ontvangen en dan wel in de vorm van korte en lange pieptonen. Dat had grote gevolgen voor de bruikbaarheid van de Morse code. Je kent waarschijnlijk wel de beelden uit films over de Tweede Wereldoorlog waarin communicatie tussen schepen via telegrafische verbindingen verliep.

Zoals het zo vaak gaat in de techniek lopen mensen op een gegeven moment aan tegen beperkingen van een bepaalde techniek en gaan dan nadenken over mogelijke verbeteringen. Een beperking van de Morse code is dat verschillende leestekens gecodeerd worden met symbolen of pulsreeksen van verschillende lengtes. Dat maakt dat bij het telegraferen met Morse code de ontvanger altijd zijn berichten moet decoderen door of de strip met tikken te “lezen” of nauwlettend de binnenkomende pieptonen te beluisteren. Bij het decoderen is dus altijd menselijke deskundigheid vereist.

De ASCII-tabel

Rond 1940 startte de ontwikkeling van de computer. Twintig jaar later voorzag Bob Bemer, werkzaam bij IBM, dat de computer een rol zou gaan spelen in communicatie. Bemer inventariseerde 60 verschillende karaktercoderingen bij de verschillende computers die in de loop der tijd waren ontstaan, zette een groep mensen aan het werk om een universele code te ontwikkelen en publiceerde de onderzoeksresultaten.

Het resultaat is de ASCII code (American Standard Code for Information Interchange), voor het eerst erkend in 1963: https://www.asciitable.com

Deze basistabel bestaat uit 128 karakters. Aan de hand van de tabel kan elk karakter worden voorgesteld door een binaire code van 7 bits. Hoe werkt deze code?

Voorbeeld: De letter “a” is het 98e karakter in de tabel en heeft dus als bijbehorend nummer “97” (het eerste karakter is de “NUL” en heeft het bijbehorende nummer “0”). De ASCII code van de letter “a” is dus het binaire getal: 1100001.

In totaal kunnen er met 7 bits 27 = 128 codes worden gemaakt. Dat maakt de codering natuurlijk niet tot een wereldwijde standaard codering die in alle taalgebieden bruikbaar is.

Opdracht Geef de hexadecimale representatie van onderstaande ASCII-tekst: "Hallo Luuk!" Opdracht Bepaal welke ASCII-tekst hier hexadecimaal is weergegeven:

44 65 20 77 6F 72 74 65 6C 20 76 61 6E 20 32 38 39 20 69 73 20 69 73 20 31 37 2E

Opdracht Maak een bestand in notepad of een soortgelijke editor. Zet er een stukje tekst in. Open het bestand vervolgens met een hexdump programma. Op een mac of op linux zou je via de terminal het programma hexdump kunnen gebruiken. Je zou dit ook online kunnen doen. Zie: https://hexed.it/

Foutcontrole

Computers en randapparatuur werken over het algemeen met bytes, series van 8 bits. Als achtste bit van de ASCII code wordt traditioneel een pariteitsbit toegevoegd. Het doel van deze extra bit is om foutcontrole mogelijk te maken.

Als voorbeeld bekijken we de letter “E” = 69 = 1000101. Bij geen pariteit wordt standaard een “0” toegevoegd aan de ASCII code, zodat de “E” wordt gecodeerd als 10001010.

Bij oneven pariteit wordt gekeken naar het aantal enen in de code. Is dit aantal oneven, dan wordt een “0” toegevoegd om het aantal enen oneven te houden en is het aantal even, dan wordt een “1” toegevoegd om het aantal enen oneven te maken. De letter “E” wordt bij oneven pariteit dus gecodeerd als 10001010.

Bij even pariteit wordt gekeken naar het aantal enen in de code. Is dit aantal even, dan wordt een “0” toegevoegd om het aantal enen even te houden en is het aantal oneven, dan wordt een “1” toegevoegd om het aantal enen even te maken. De letter “E” wordt bij even pariteit dus gecodeerd als 10001011.

Opdracht: Codeer het woord "montessori" met even pariteit. Laat je buurman jou woord decoderen en kijk of het klopt.

Wanneer bij even pariteit toch een byte wordt ontvangen met een oneven aantal bits, dan weet de ontvangende partij dat er een fout is opgetreden.

Om aan te geven dat een boodschap goed is ontvangen kan door de ontvangende partij gebruik gemaakt worden van de code:

06 = 0000110 = ACK (ACKnowledge = bevestig)

en om aan te geven dat een boodschap niet goed is ontvangen kan gebruik gemaakt worden van de code:

21 = 0010101 = NAK (Negative AcKnowledge = ontkenning) Bij communicatie tussen computers dient altijd bekend te zijn op welke manier de gegevens (data) uitgewisseld worden. Zo een afspraak heet ook wel een protocol. 

Unicode

Vanaf 1991 werd er gewerkt aan een universele karaktercodering waarbij alle karakters, die er op de wereld worden gebruikt, in één tabel zijn opgenomen. Deze code wordt ook wel Unicode genoemd. Vanaf 1991 (Unicode 1.0) is Unicode uitgebreid met allerlei alfabetten, tekens en symbolen.

De meest recente versie van Unicode is een 32-bits codering, hetgeen betekent dat er ruimte is voor 232 = 4294967296 verschillende karakters. Dat is ook wel nodig, want alleen al de Chinese taal kent duizenden karakters.

Last updated