Grondslagen v/d beleidsinformatica Hoofdstuk 2: Binaire gegevenscodes 2.1 OVERZICHT Hoe worden gegevens op basis van gegevensverwerking gecodeerd behandeld en opgeslagen? --> computers werken met binaire getallen Gegevens worden dus gecodeerd in binaire vorm 2.2 Wat willen we met dit hoofdstuk bereiken 2.3 Inhoud ZIE PAGINA 9 – 10 VOOR HET OVERZICHT 2.4 BINAIRE GETALLEN: BITS EN BYTES 2.4.1 Digitale en analoge systemen Computer werkt op basis van stroomstoten --> gegenereerd op precieze tijdstippen door klok Stroompulsen kan aan of uit zijn 0: de afwezigheid v/d puls 1: de aanwezigheid v/d puls De symbolen 0 en 1 zijn een BIT (Binary Digit) Computer is hierdoor digitaal systeem --> enkel beperkt aantal toestanden kan men voorstellen (computer: 2) Analoge systemen kunnen continuüm waarden voorstellen, onbeperkt Voorbeeld: volumeknop v/e radio Gegevens: gecodeerde voorstellingen van verschijnselen in werkelijkheid --> codering op basis van woorden, klanken, getallen, kleuren en tekens Men gebruikt voor computer digitale codering aangepast aan de computer Er zijn verschillende gegevenssoorten - Booleaanse (PandA) gegevens: gegevens die overeenkomen met al dan niet aanwezig zijn van bepaald fenomeen - Numerieke gegevens: gegevens voorgesteld door getallen (lengte, prijs, hoeveelheid, wedde, …) - Aflanumerieke gegevens: gegevens voorgesteld door cijfertekens en lettertekens (naam, adres, …) - Grafische gegevens: gegevens voorgesteld door afbeeldingen, visuele voorstellingen (zowel stil als bewegend) - Geluid: gegevens die overeenkomen met bepaalde klanken - Specifieke computergegevens: opdrachten (machine-instructies) die aan computeronderdeel gegeven worden Het is niet altijd even simpel zaken te digitaliseren Sommige zaken zijn analoog en moeten digitaal worden (grafische, geluidsgegevens) 1 Jeroen De Koninck – HIRB – 2012-2013 2.4.2 Basisbegrippen v/h binaire talstelsel Binair talstelsel is een positioneel talstelsel (zoals het Arabische) --> waarde v/h symbool verandert naargelang de plaats v/h symbool Voorbeeld: 5 ≠ 57 ≠ 506 (waarde van 5 is hier overal anders) Het binair talstelsel heeft als basisgetal het getal 2 --> er zijn namelijk twee symbolen in het talstelsel (0/1) Voorbeeld: bij het Arabische zijn dit er 10, de cijfers Voorbeeld: Het getal 100 bestaat uit drie symbolen, die een positienummer krijgen --> 0 in positie 0 --> 0 in positie 1 --> 1 in positie 2 ! De waarde v/e positie is gelijk aan het basisgetal tot de macht (positienummer) Bijvoorbeeld in Arabisch talstelsel: Waarde van een getal in positie 0 is 1, want 100 is 1 Waarde van een getal in positie 1 is 10, want 101 is 10 Waarde van een getal in positie 2 is 100, want 10² is 100 De waarde v/h symbool in een positie is gelijk aan: Symbool x waarde v/d overeenkomstige positie De waarde v/e getal is dan de som v/d gewogen waarden v/d symbolen Voorbeeld: 100 (1 x 10²) + (0 x 101) + (0 x 100) = 100 + 0 + 0 = 100 Bij binaire getallen is het basisgetal 2 Bijgevolg zou daar 100 gelijk zijn aan (1 x 2²) + (0 x 21) + (0 x 20) = 4 + 0 + 0 = 4 ! Getallen na de komma krijgen een exponent met een – ervoor (-1, -2, -3...) Test oefening: waarde v/h binair getal 101110101,111 = 373,875 2.4.3 Bits en Bytes Symbolen van binair talstelsel (0/1) zijn bits --> bit is de kleinste gegevenseenheid v/d computer Vaak voegt men acht bits samen --> byte: 28 = 256 combinaties van 0 en 1 in één byte Byte laat 0 tot 225 (28 - 1) getallen toe Bij N posities laat men bijgevolg 2N verschillende combinaties toe --> deze combinaties gaan van 0 tot en met 2N - 1 2 Jeroen De Koninck – HIRB – 2012-2013 1 Byte is zeer beperkt --> werken met veelvouden 1 KB 210B 1024 bytes 10³ bytes 10 20 1 MB 2 KB 2 B 1.048.576 bytes 106 bytes 10 30 1 GB 2 MB 2 B 1.073.741.824 bytes 109 bytes 1 TB 210 GB 240B 1.099.511.627.776 bytes 1012 bytes 10 50 1 PB 2 TB 2 B 1.125.899.906.842.624 bytes 1015 bytes ! Bij communicatietechnologie gebruikt men nog steeds kilobits en megabits, deze zijn 1/8ste waard 2.5 BEWERKINGEN IN HET BINAIRE STELSEL 2.5.1 Optelling Bij het optellen van binaire getallen, gebruikt men volgende regels: 0+0=0 0+1=1 1+0=1 1 + 1 = 10 (men brengt een één over naar de volgende positie) Voorbeeld: 19 + 31 = 50 19 = 1 x 24 + 1 x 21 + 1 x 20 19 = 16 + 2 + 1 19 = 10011 31 = 1 x 24 + 1 x 23 + 1 x 2² + 1 x 2 + 1 31 = 16 + 8 + 4 + 2 + 1 31 = 11111 19 + 31 = 50 Vervolgens: 10011 +11111 ---------110010 2.5.2 Aftrekking 0-0=0 1-1=0 1-0=1 0 - 1 = 1 (men brengt een één over naar de vorige positie) Vaak worden aftrekkingen herleid tot optellingen door de computer --> Gebruikt van een tweecomplement Men bekomt de complement door van elk getal v/h grondtal -1 af te trekken (op elke positie) Men bekomt de tweecomplement door bij de complement 1 op te tellen op getal met positie 0 3 Jeroen De Koninck – HIRB – 2012-2013 Voorbeelden: Origineel 100 1001 1111 1010 10110 00000 Tussenresultaat 011 0110 0000 0101 01001 11111 Aftrekking Som van de tweecomplement en het aftrektal --> ! We werken met een vast aantal posities De waarde v/h eerste getal is een tekenbit Is de tekenbit 0 dan is het getal positief Is de tekenbit 1 dan is het getal negatief ZIE BOEK PAGINA 15 VOOR VOORBEELDEN 2.5.3 Vermenigvuldiging Analoog aan decimale vorm 7 x 5 = 35 111 x 101 -------1 x 111 0 x 111 1 x 111 -------111 000 111 -------Optellen = 100011 2.5.3 Deling Analoog aan decimale vorm NIET GESNAPT 4 Jeroen De Koninck – HIRB – 2012-2013 Tweecomplement 100 0111 0001 0110 01010 (1)00000 2.6 VOORSTELLING VAN PANDA GEGEVENS 2.6.1 Enkelvoudige PandA gegevens Vooral bij logica hanteren van true/false gegevens --> true/false zijn geen alfanumerieke waarde, ze geven de aanwezigheid of de afwezigheid weer PandA staat voor Presence and Absence We kunnen de interpretatie in een tabel gieten via: PRESENT True 1 ON YES + WAAR VOOR YANG ... ABSENCE False 0 OFF NO ONWAAR TEGEN YIN ... Deze gegevens vormen de basis voor ICT-verwerking --> het is de basis van digitale voorstelling PandA gegevens kan men ook aanwenden voor voorstellen/opslaan van gegevens op: - Magnetische media (harde schijven) - Optische media (Cd’s en DVD’s) - Computergeheugen 2.6.2 Hexadecimale notatie en groepen van PandA gegevens Binnen de ICT bestaat er een hexadecimaal talstelsel --> het grondtal is hier 16 Men gebruikt: 0 - 9 voor de cijfers 10 voor A 11 voor B 12 voor C 13 voor D 14 voor E 15 voor F 5 Jeroen De Koninck – HIRB – 2012-2013 Men stelt hexadecimale cijfers vaak binair voor in groepen van 4 bits (tetrade) Voorbeelden: 0 0000 AAAA 1 0001 AAAP 3 0011 AAPP F 1111 PPPP Een 1 wijst op een P Een 0 wijst op een A Voorbeeld: het hexadecimaalgetal 1D3 1 = 1 x 162 D = 13 x 161 3 = 3 x 160 = 467 0001 1101 0011 Men kan bovenstaande rij ook zuiver binair maken 000111010011 --> Vervolgens schrijven als de som van machten van 2 --> 467 ! Hexadecimale codes worden ondermeer gebruikt voor kleurencodes --> Hexadecimaal getal met slechts twee cijfers geeft een RGB kleur aan (Zie photoshop, HTML, CSS) 2.7 VOORSTELLING VAN NUMERIEKE GEGEVENS Gehele getallen: kan men voorstellen via zuiver binaire vorm Reële getallen: werken met drijvende komma voorstelling, en graden van precisie ! Vaak afrondings- en berekeningsfouten 2.7.1 Zuiver binaire voorstelling van gehele getallen Zuivere binaire voorstelling --> vast aantal bits voor de opslag v/e getal Voorbeeld: 32 bits of 16 bits De eerste bit blijft de tekenbit --> 0 is positief --> 1 is negatief Vaak vult men getallen links aan met 0’en tot men aan de basis voorstelling komt Zo schrijft men het getal 29 niet als 11101 maar wel als 0 0000000000000000000000000011101 6 Jeroen De Koninck – HIRB – 2012-2013 Negatieve getallen stelt men vaak gewoon voor met hun tweecomplement --> hierdoor komt de tekenbit op 1 te staan 1 1111111111111111111111111100011 is bijvoorbeeld -29 Een getal bevat 32 bits waarvan 1 de tekenbit Men kan dus getallen voorstellen van -231 tot 231-1 De negatieve waarde gaan van -1 tot -2.147.483.648 De positieve waarde gaan van 0 tot 2.147.483.647 2.7.2 Voorstelling van reële getallen in drijvende komma vorm Voor niet gehele getallen en zeer grote/kleine getallen gebruikt men drijvende komma vorm --> wetenschappelijk notatie: mre m : mantisse r : radix/grondtal e : exponent In normale wetenschappen is het grondtal 10 (denk aan wetenschappelijke notatie) Bij computersystemen is dit anders: 2 voor kleine systemen 16 voor computerversie v/d drijvende komma-voorstelling 32 voor getallen (enkele precisie) 64 voor getallen (dubbele precisie) Bij IBM-standaarden stelt - Bit 1: tekenbit - Bit 2 tot 8: exponent (effectief getal) - Bit 9 tot 64: mantisse (komma getal) Men bekomt een getal via de formule: -1(tekenbit) x mantisse x 16(exponent - 64) Zo is het getal: 0 1000001 101000...000 (tot 64 bits) --> 0: het getal is positief --> 1000001: de exponent is 65 --> 101....: 1 x 2-1 + 1 x 2-3 = de mantisse is 0.625 Het getal is dus: 1 x 0.625 x 16(65-64) = 0.625 x 16 = 10 De voorstellingen 32 bit en 64 bit hebben bijgevolg enkel betrekking op de precisie v/h getal --> de maximale waarde is voor beide hetzelfde namelijk bepaald door de exponent Extreem grote getallen worden oneindig Extreem kleine getallen worden 0 Zo kan a + b = a zonder dat b = 0 7 Jeroen De Koninck – HIRB – 2012-2013 2.8 VOORSTELLING VAN ALFANUMERIEKE GEGEVENS Alfanumerieke gegevens of karaktertekens --> bevatten de 26 letters v/h alfabet --> bevatten de cijfers van 0 t.e.m. 9 --> bevatten de lees-, functie- en bijzondere tekens Ook voor deze voorstelling heeft men enkel nullen en enen --> codering is noodzakelijk Meestal gebruikt men 8 bits voor de voorstelling van één teken Men kan daardoor maximaal 28 tekens voorstellen of 256 tekens Voor elke code heeft men een codetabel die een bitrij toewijst aan elk symbool 2.8.1 EBCDIC voorstelling Wordt voornamelijk gebruikt op IBM MainFrame systemen EBCDIC: Extended Binary Coded Decimal Interchange Code ZIE TABEL PAGINA 21 2.8.2 ASCII voorstelling Uitgegeven door ANSI --> American National Standards Institute --> eveneens een 8-bitcode ASCII-code: American Standard Code for Information Interchange Cijfers krijgen hun gewone code voorgaand door 0011 --> ZIE TABEL PAGINA 21 Ook een spatie is opgenomen als 0010 0000 --> hierdoor zal bij sortering woorden met spaties eerst staan Voorbeeld: Debruyne Dedene De Haene --> hersorteren als De Haene Debruyne Dedene 2.8.3 UNICODE voorstelling Meest recente coderingssysteem --> kan alles coderen uit alle talen UNICODE wordt gezien als de vervanger van alles andere codes in de toekomst De UNICODE is een 16–bitcode en voorziet 65.536 combinaties (65.000 is genoeg) De eerste tekens zijn uit de ASCII-code daarnaast andere talen 8 Jeroen De Koninck – HIRB – 2012-2013 2.9 VOORSTELLING VAN MULTIMEDIA GEGEVENS Verwerking van grafische en geluidsgegevens --> deze nu ook digitaal (ontstaan van digitale televisie en radio) 2.9.1 Voorstelling van grafische gegevens 2.9.1.1 Stilstaande beelden: bitmap Weergave via bitmapnotatie of rasternotatie --> we gaan grafische zaken opsplitsen in eindig aantal punten Men verdeeld een grafisch element in groot aantal kleine punten --> pixels Elk punt wordt omgezet naar een bitrij met (kleur)-kenmerken Computer begrijpt en verwerkt dit getal ZIE VOORBEELD PAGINA 23 We kunnen met N bits, 2N tinten weergeven ! Kwaliteit v/h beeld wordt niet enkel bepaald door het aantal tinten per pixel We moeten ook rekening houden met resolutie v/e beeldscherm Dit is het aantal pixels in horizontale en verticale richting dat een scherm kan weergeven Soms gebruikt men ook dpi (dots per inch) Bijgevolg hebben foto’s vaak een erg grote opslagcapaciteit nodig Voorbeeld: Afbeelding van 8 x 10 inch² Resolutie van 300dpi Daardoor is de resolutie 90.000 per inch² Nog een keer maal 80 is 7.2 megapixels Neem dan nog 3 bytes per pixel waardoor je kopt op 21.6 MB Dit heeft effect op opslagcapaciteit en netwerkcapaciteit voor werking/doorsturen Men gaat vaak afbeeldingen via compressietechnieken verkleinen om beide problemen op te lossen Er zijn redelijk wat extensies die bitmapnotatie ondersteunen: JPG: Joint Photographic Experts Group GIF: Graphics Interchange Format BMP: Windows Bitmap TIFF: Tagged Image File Format PNG: Portable Network Graphics 9 Jeroen De Koninck – HIRB – 2012-2013 2.9.1.2 Stilstaande beelden: vectornotatie Men gaat de grafische gegevens voorstellen als een lijst van instructies --> hoe de figuur construeren Voornamelijk gebruikt bij tekenprogramma’s zoals CorelDRAW Vectornotatie heeft voordelen t.o.v. bitmapnotatie - Minder opslagcapaciteit - Makkelijkere herschaling/veranderingen mogelijk zonder kwaliteitsverlies Wel ook een beperking: - Vectornotatie enkel mogelijk voor vaste geometrische figuren (bv. niet voor echte foto’s) 2.9.1.3 Bewegende beelden Film is een snelle opeenvolging van stilstaande beelden (FRAMES) Elke frame is een foto van bitmap-formaat De opslagcapaciteit en voorstellingswijze worden bepaald door: - individuele bitmap-formaat - snelheid v/d opeenvolging (frame rate - fps - frames per second) Stel voorbeeld film van 1 uur - 640 x 480 pixels - 30 fps - 256 kleuren (28) --> opslagcapaciteit: 3600 x 30 x 640 x 480 x 8 = 30,9 GB Elk format (MPEG, AVI, DIVX) gebruikt dus één of andere vorm van compressie 2.9.2 Voorstelling van geluidsgegevens Geluid: continue analoge signalen --> het zijn trillingen met een: - frequentie (aantal trillingen per seconde, meer trillingen is hoger geluid) - amplitude (hoogte v/d golven, hogere trillingen is luider geluid) Men moet keuzes maken: - Eerste keuze: sampling: bepaald het aantal samples per seconde (sampling rate) --> hoge sampling rate wijst op veel metingen en nauwkeurigere opname Menselijk oor gebruikt frequentie van 20.000 Herz --> 20.000 trillingen per seconde Voor een digitale geluidsopname gaat men dit verdubbelen --> 44.100 herz per seconde wordt gebruikt - Twee keuze: nauwkeurigheid v/d sampling: aantal bits om de hoogte aan te duiden --> meer bits wijst op nauwkeurigere omschrijving v/d amplitude Per extra bit verdubbeld de nauwkeurigheid 10 Jeroen De Koninck – HIRB – 2012-2013 Voor albums gebruikt men meestal 16 bits of 216 Bijgevolg zou een minuut digitale muziek gelijk zijn aan: 60 seconden x 44.100 samples x 16 bits x 2 (stereo) = meer dan 10 mb Bij het opnemen van geluid: --> analoog signaal wordt digitaal Bij het afspelen van geluid: --> digitaal geluid wordt analoog Meest bekende opslagmethoden zijn WAV (wave) en MP3 2.9.3 Datacompressie Vooral bovenstaande gegevens (multimedia) zal men willen voorzien van compressie --> er zijn veel methoden tot compressie Datacompressie: representatie van digitale gegevens transformeren naar andere vorm (minder bits) Deze compressie geeft men weer via een compressieratio Compressieratio: GROOTE ORIGINELE BESTAND/GROOTE GECOMPRIMEERDE BESTAND Een grote compressieratio wijst op een sterke compressie en een kleiner eindbestand ! Compressieratio afhankelijk v/d gebruikte algoritmen CODECs (COmpression DECompression) Er zijn CODECs voor alle soorten gegevens --> PKZIP (voornamelijk bekend als WINZIP) Maar ook CODECs gericht op één soort gegevens gericht --> Specifieke CODECs vaak hoger compressieratio dan generieke CODECs We hebben twee grote soorten CODECs Lossless CODECs --> Na decompressie v/h gecomprimeerde krijgt men bit voor bit exact het oorspronkelijke bestand Voorbeeld: voornamelijk van toepassing bij tekstbestanden, PKZIP is een lossless CODEC Vaak maakt men gebruik van run lenght encoding Men gaat een patroon dat zich meermaals voordoet slechts één maal opslaan Daarnaast definieert men het voorkomen van dit patroon Voorbeeld: eeeee wordt 5 x e Voorbeeld: foto met rode strook, dit kan men ook weergeven als enkele keren die pixel Vaak maakt men gebruik van adaptive pattern substution Men gaat een complex patroon weergeven als een korter patroon Via een soort van “woordenboek” legt men de codes aan Voorbeeld: zxyw zxyw zxyw = k k k met k = zxyw 11 Jeroen De Koninck – HIRB – 2012-2013 Lossy CODECs --> Enig verschil na decompressie is toegestaan Voorbeeld: fotobestanden, videobestanden en geluidsbestanden --> vaak na decompressie klein beetje verschil, maar nauwelijks merkbaar Men spreekt van een verlies --> Men verliest kwaliteit in ruil voor compressie Gebruik maken van JPG (stilstaande beelden) --> Men gaat stilstaande beelden niet per pixel aan bits beperken Dit zou leiden tot erg veel kwaliteitsverlies Men analyseert het menselijk vermogen om verschillen te onderscheiden Sommige verschillen zien mensen amper tot niet --> Men laat sommige dingen weg, waardoor men een hogere compressieratio kan bekomen Gebruik maken van MPEG (bewegende beelden) --> Men gaat elke frame apart op basis van JPG comprimeren --> Men doet aan interframe coding waarbij men verschillen tussen opeenvolgende frames weglaat Gebruik van MP3 (geluid) --> Men gaat te hoge/lage tonen voor menselijk oor weg doen 2.10 VOORSTELLING VAN COMPUTEROPDRACHTEN Nood aan programmaopdrachten in het intern geheugen --> laat verwerking v/d gegevens toe Ook deze instructies worden intern opgeslagen als bits Instructie bestaat uit: - Operator: de opdrachtcode: nodig voor de bewerking - Operands: één of meer operands die aangeven welke gegevens te gebruiken Een computerprogramma kan in twee vormen bestaan - broncode: geschreven door programmeur in programmeertaal (Eiffel, Java, C++, ...) --> vormt de ASCII-code - machinetaalcode: vertaalt de broncode zodat deze uitgevoegd kan worden (compilatie) --> gebeurd via compiler De machinetaalcode zal uitgevoerd worden, maar de broncode is veel meer verstaanbaar --> we herschrijven dus de broncode en generen daarmee een nieuwe machinetaal Voorbeeld: We hebben een opdracht in machinetaal met twee operands in zuivere binaire vorm --> deze bevinden zich in registers in de ALU De opdracht bestaat uit twee bytes: - de instructiecode - de nummer v/d register waarin de operand zich bevindt De tweede nummer (die v/d register) wordt opgedeeld in links en rechts voor elke operand 12 Jeroen De Koninck – HIRB – 2012-2013 Voorbeeld: 0001 1010 0010 0101 Opdrachtcode: 0001 1010 Nummer v/h eerste register: 0010 (2) Nummer v/h twee register: 0101 (5) Men zal in dit voorbeeld de getallen uit de twee registers optellen --> het resultaat komt in register twee De capaciteit v/d operand is afhankelijk v/d plaats waar deze zich bevindt - intern geheugen: meer dan één byte - registers: 4 bits ! Instructies worden dus ook gecodeerd volgens regels van 0-en en 1-en 2.11 ZELFCONTROLE BIJ CODES Bij het verwerken van gegevens worden groepen van bits vaak rondgestuurd - Kan intern - Kan naar randapparatuur - Kan naar een andere computer --> fouten kunnen zich optreden Voorbeeld: wegvallen v/d stroompuls bij het overzetten (signaal) Men gebruikt vaak zelfcontrolerende codes om de computer zelf fouten te laten opsporen --> We geven aan de gebruikte code een pariteitspositie Men kan gebruik maken van een - Pare pariteitsregel: men brengt een 1 aan in de pariteitspositie bij oneven aantal 1-bits - Onpare pariteitsregel: men brengt een 1 aan in de pariteitspositie bij even aantal 1-bits Hierdoor worden de originele bits + de pariteitsbit gelijk aan de zaak voor de pariteitspositie Voorbeeld onpare partiteitsregel: Te coderen symbool A K W ASCII-code 0100 0001 0100 1011 0101 0111 Pariteitsbit 1 1 0 Totaal aantal 1-bits 3 5 5 De voorkeur geniet om de onpare regel te gebruiken --> de 8-bits code zal een 9-bitscode worden steeds met een onpaar aantal 1-bits Zo kan men analyseren: wanneer de 9-bit code bestaat uit een even aantal 1-bits is er een fut --> men zal opnieuw moeten uitvoeren We geven de voorkeur aan onpare regel omdat: --> wanneer alle 1-bits wegvallen kan men fouten niet opsporen via pariteitsregel Want bij onpare: als alles bits 0-en zijn, kan dit niet, want de onpare pariteitsregel zou een 1 vooraan moeten zetten 13 Jeroen De Koninck – HIRB – 2012-2013