Binaire getallen en gegevensrepresentatie

Leer hoe computers getallen, tekst, afbeeldingen en geluid omzetten in bits. Reken om tussen het decimale, binaire en hexadecimale talstelsel; sla gehele getallen op zonder teken en in tweecomplement; codeer reële getallen in IEEE 754-drijvendekommarepresentatie en ontdek waarom 0,1 + 0,2 niet precies 0,3 is; codeer tekst met ASCII en Unicode (UTF-8); bereken hoeveel opslagruimte afbeeldingen, video en geluid nodig hebben; en ontdek hoe verliesloze compressie en compressie met verlies bestanden kleiner maken.

BeginnerLes 2 van 7 in Cursus Informatica: hoe computers, data, algoritmen en internet werken

Wat je leert

  1. Leg uit hoe groepen bits informatie coderen en reken gehele getallen om tussen het decimale, binaire en hexadecimale talstelsel.
    • Leg uit wat bits en bytes zijn en hoeveel waarden je met een groep bits kunt weergeven
      Beschrijf bits en bytes, bereken hoeveel patronen een aantal bits oplevert en lees opslag- en snelheidseenheden correct.
    • Reken gehele getallen om tussen het decimale en het binaire talstelsel
      Gebruik plaatswaarden om binaire getallen te lezen en reken decimale gehele getallen met twee betrouwbare methoden om naar binair.
    • Gebruik hexadecimale notatie als verkorte binaire notatie
      Reken om tussen het hexadecimale, binaire en decimale talstelsel en leg uit waarom programmeurs bytes, kleuren en adressen hexadecimaal schrijven.
  2. Sla niet-negatieve en negatieve gehele getallen op in een vast aantal bits, bepaal hun bereik en leg uit wat er gebeurt als een waarde niet past.
    • Sla gehele getallen zonder teken op en herken hun bereik
      Geef niet-negatieve gehele getallen weer met een vaste bitbreedte, kies een breedte waarin de waarden passen en leg overloop uit.
    • Geef negatieve gehele getallen weer in tweecomplement
      Lees en schrijf negatieve gehele getallen in tweecomplement, bepaal het bereik van een bitbreedte met teken en vergelijk dit met teken-grootterepresentatie.
  3. Schrijf breuken binair, codeer en decodeer getallen in de IEEE 754-formaten voor drijvendekommagetallen en leg de grenzen van hun bereik en precisie uit.
    • Schrijf breuken binair en ontdek waarom je sommige niet exact kunt weergeven
      Reken om tussen decimale en binaire breuken, herken repeterende binaire breuken zoals 0,1 en beschrijf getallen in vastekommarepresentatie.
    • Codeer en decodeer drijvendekommagetallen volgens IEEE 754
      Gebruik binaire wetenschappelijke notatie en de velden voor teken, exponent en fractie van de IEEE 754-formaten met enkele en dubbele precisie.
    • Leg bereik, precisie en afrondingsfouten bij drijvendekommarepresentatie uit
      Leg uit waarom drijvendekommawaarden benaderingen zijn, voorspel typische effecten zoals 0,1 + 0,2 en kies een geschikt getaltype.
  4. Leg uit hoe tekens getallen en bytes worden, gebruik ASCII en Unicode en voorspel hoeveel bytes UTF-8-tekst nodig heeft.
    • Codeer tekst met tekencodes en ASCII
      Gebruik een tekencodetabel om tekst om te zetten in getallen en bits, lees de indeling van ASCII en leg de beperkingen ervan uit.
    • Gebruik Unicode-codepunten en UTF-8-codering
      Maak onderscheid tussen een Unicode-codepunt en de gecodeerde bytes, codeer tekens in UTF-8 en leg verminkte tekst en aantallen bytes uit.
  5. Beschrijf hoe afbeeldingen worden omgezet in pixels en kleurwaarden, bereken de benodigde opslagruimte en leg uit hoe geluid wordt bemonsterd tot getallen.
    • Geef afbeeldingen weer met pixels en kleurwaarden
      Beschrijf rasterafbeeldingen, kleurdiepte, RGB en hexadecimale kleurcodes, kleurenpaletten en transparantie.
    • Bereken de bestandsgrootte van afbeeldingen en vergelijk rasterafbeeldingen met vectorafbeeldingen
      Bereken de opslagruimte die een ongecomprimeerde afbeelding of video nodig heeft, leg uit wat bestanden toevoegen en beschrijf vectorafbeeldingen.
    • Digitaliseer geluid door te bemonsteren en te kwantiseren
      Leg bemonstering, bemonsteringsfrequentie en bitdiepte uit, pas de bemonsteringsregel toe en bereken de grootte van ongecomprimeerde audio.
  6. Leg uit hoe compressie gegevens kleiner maakt, pas eenvoudige verliesloze methoden toe en kies tussen formaten met en zonder verlies.
    • Leg verliesloze compressie uit met run-length encoding en andere coderingen
      Pas run-length encoding en codes met variabele lengte toe, beschrijf woordenboekmethoden en leg uit waarom geen enkele methode elk bestand kleiner maakt.
    • Leg compressie met verlies uit en kies een geschikt bestandsformaat
      Beschrijf hoe compressie met verlies minder opvallende details weglaat, weeg kwaliteit af tegen grootte en kies formaten voor verschillende soorten gegevens.

Binaire getallen en gegevensrepresentatie: uitleg

6 hoofdstukken

1

Tel patronen en reken om tussen talstelsels

Een computer kan dezelfde groep bits gebruiken voor een getal, een letter of een deel van een afbeelding. De interpretatie geeft het patroon zijn betekenis. Voordat je met die interpretaties werkt, moet je de beschikbare patronen kunnen tellen en de eenheden voor opslag en overdracht kunnen lezen. Het decimale, binaire en hexadecimale talstelsel geven je vervolgens drie manieren om een geheel getal te schrijven, elk met plaatswaarden die omrekeningen voorspelbaar maken.

1.1 Bits, bytes en opslageenheden

Een bit, een afkorting van binary digit, heeft een van twee waarden: 0 of 1. Hardware kan twee fysische toestanden betrouwbaar onderscheiden, zoals hoge en lage spanning, tegengestelde magnetisatierichtingen, of licht en geen licht. De geschreven cijfers beschrijven die toestanden; ze hoeven niet letterlijk in een apparaat voor te komen.

Tel de patronen

Elke nieuwe bit verdubbelt het aantal mogelijkheden. Twee bits hebben vier patronen: 00, 01, 10 en 11. Drie bits hebben er acht. In het algemeen geven n bits 2n patronen. Een nibble is 4 bits en een byte is 8 bits, dus heeft een byte 256 patronen. Een byte is op de meeste moderne computers ook de kleinste adresseerbare geheugeneenheid.

Om een verzameling waarden te coderen, kies je genoeg patronen voor elk element. Voor 26 letters geven vier bits maar 16 patronen; vijf bits geven er 32, dus zijn vijf bits genoeg. Voor 1.000 waarden geven negen bits 512 patronen en tien bits 1.024. Ongebruikte patronen zijn toegestaan. Met 16 bits zijn er 65.536 patronen en met 32 bits zijn er 4.294.967.296.

Het aantal patronen verschilt van het grootste getal zonder teken. Vier bits bieden 16 patronen, maar het tellen begint bij nul, dus lopen de waarden van 0 tot en met 15. Eén patroon wordt al voor nul gebruikt.

Om de minimale bitbreedte systematisch te bepalen, vergelijk je opeenvolgende machten van twee met het benodigde aantal mogelijkheden. Stop bij de eerste macht die groot genoeg is. De toets is 2n≥N voor N verschillende waarden. Precieze gelijkheid is toegestaan: acht mogelijkheden passen in drie bits, terwijl een negende mogelijkheid een vierde bit vereist. Een grotere breedte werkt ook, maar is niet meer het minimum.

Geef het patroon betekenis

De byte 01000001 kan het gehele getal 65 betekenen, de ASCII-letter “A” of een kleurkanaalintensiteit van 65 op een schaal van 0–255. De bits alleen bepalen niet welke interpretatie geldt. Het gegevenstype van een programma en het formaat van het bestand bepalen hoe je ze interpreteert.

Lees opslageenheden

Twee families van voorvoegsels zijn gangbaar:

Decimale opslagBytesBinaire opslagBytes
1 kB1.0001 KiB1.024
1 MB1.000.0001 MiB1.048.576
1 GB1.000.000.0001 GiB1.073.741.824

De decimale voorvoegsels zijn SI-voorvoegsels; de binaire voorvoegsels zijn IEC-voorvoegsels. Bij elke decimale stap wordt de eenheid 1.000 keer zo groot; bij elke binaire stap wordt die 1.024 keer zo groot. Om bytes in een grotere eenheid uit te drukken, deel je door het aantal bytes in die eenheid.

Een schijf met het label 500 GB bevat 500.000.000.000 bytes. Gedeeld door 1.073.741.824 is dat ongeveer 465,66 GiB. Software kan die binaire hoeveelheid “GB” noemen, waardoor de weergegeven capaciteit kleiner lijkt. De verandering van eenheid zelf heeft geen bytes verwijderd; formattering en systeembestanden staan daar los van.

Maak onderscheid tussen bits en bytes

Een kleine letter b betekent bit; een hoofdletter B betekent byte. Een verbinding van 100 Mbit/s draagt elke seconde maximaal 100 miljoen bits over. Gedeeld door 8 is dat 12,5 miljoen bytes per seconde, oftewel 12,5 MB/s, vóór protocoloverhead. Als je die snelheid als 100 MB/s leest, maak je die acht keer te groot.

Belangrijkste punten

  • Een byte heeft 8 bits; een nibble heeft er 4.
  • Elke extra bit verdubbelt het aantal patronen.
  • Kies het kleinste aantal bits waarvoor de beschikbare patronen alle waarden dekken.
  • Een gegevenstype of codering geeft een bitpatroon betekenis.
  • SI-voorvoegsels voor opslageenheden gebruiken machten van 10; IEC-voorvoegsels gebruiken machten van 2.
  • Deel een bitsnelheid door 8 om de bijbehorende snelheid in bytes te krijgen.

1.2 Binaire plaatswaarde en omrekening

Het binaire talstelsel is een positiestelsel: de waarde van een cijfer hangt af van de plaats waar het staat. Het decimale stelsel gebruikt tien cijfers en machten van 10. Het binaire stelsel gebruikt twee cijfers, 0 en 1, en machten van 2. Om een binair getal te lezen, tel je de plaatswaarden op waar een 1 staat.

Lees een binair geheel getal

Van rechts naar links zijn de plaatswaarden 1, 2, 4, 8, 16, 32, 64, 128, enzovoort. Elke waarde is twee keer zo groot als de vorige, want 20=1, 21=2 en 22=4.

Voor 1011012 zet je de zes bits onder hun plaatswaarden:

Plaatswaarde32168421
Bit101101

De waarde is 32+8+4+1=45. Een nul draagt niets bij, maar houdt de andere cijfers op de juiste plaats. Voorloopnullen veranderen de waarde niet: 00101101 is ook 45.

De meest linkse bit is de meest significante bit, of MSB. De meest rechtse is de minst significante bit, of LSB. Elke plaatswaarde behalve de laatste is even, dus is een binair geheel getal precies dan oneven als de LSB 1 is.

Reken om door machten van twee af te trekken

Om 156 binair te schrijven, begin je met de grootste macht van twee die past: 128. Trek die af; er blijft 28 over. De plaatswaarden 64 en 32 passen niet, dus krijgen beide een 0. Neem 16, waarna 12 overblijft; neem 8, waarna 4 overblijft; neem 4, waarna 0 overblijft. De ongebruikte posities voor 2 en 1 krijgen een 0.

In de volgorde van de plaatswaarden is het resultaat 156=100111002. Controleer dit door de gekozen plaatswaarden op te tellen: 128+16+8+4=156. Als je een ongebruikte kolom overslaat, verschuift elke volgende bit en verandert het getal.

De aftrekmethode werkt omdat elke binaire plaatswaarde maximaal één keer kan worden gebruikt. Nadat je de grootste passende macht hebt genomen, is de rest kleiner dan die macht. Ga in aflopende volgorde door alle plaatswaarden heen, ook de posities met een nul, totdat de positie voor de eenheden is gevuld. Zo komen de gekozen bits overeen met afzonderlijke machten in plaats van een lijst machten zonder posities.

Reken om door herhaald te delen

Een andere methode deelt herhaaldelijk door 2. Bewaar het quotiënt voor de volgende deling en noteer de rest:

GetalQuotiëntRest
156780
78390
39191
1991
941
420
210
101

Lees de resten van onder naar boven. Dat geeft 10011100. De eerste rest hoort bij de positie voor de eenheden, dus als je naar beneden leest, draai je de volgorde van de plaatswaarden om. Hier zou dat 00111001 opleveren, oftewel 57.

Houd het grondtal zichtbaar

Het subscript in 102 betekent grondtal 2, dus is de waarde twee. Dezelfde cijfers in 1010 betekenen tien. Binaire getallen lees je meestal cijfer voor cijfer: “één nul”. Het tellen gaat 0, 1, 10, 11, 100, 101, 110, 111, 1000; bij 2 gaat er een overdracht naar de volgende kolom. Een reeks van acht enen is 28−1=255. Als je een nul toevoegt, verschuift elke positie naar links en verdubbelt de waarde: 101 wordt 1010, waarbij vijf tien wordt.

Belangrijkste punten

  • Tel de machten van twee op waarvan de bits 1 zijn.
  • Voorloopnullen laten een waarde ongewijzigd; ontbrekende posities binnen het getal niet.
  • Lees de resten van herhaald delen van de laatste naar de eerste.
  • Een geheel getal is precies dan oneven als de minst significante bit 1 is.
  • Een nul toevoegen verdubbelt een onbegrensd binair geheel getal.

1.3 Hexadecimale notatie als leesbare binaire notatie

Het hexadecimale talstelsel schrijft getallen met grondtal 16. De cijfers zijn 0–9 gevolgd door A, B, C, D, E en F, die 10 tot en met 15 betekenen. Eén hexadecimaal cijfer kan elke mogelijke groep van vier bits beschrijven, waardoor lange binaire patronen gemakkelijker te lezen zijn.

Koppel vier bits aan één cijfer

Omdat 16=24, komt elke hexadecimale positie overeen met precies vier binaire posities:

HexadecimaalBinairHexadecimaalBinair
0000081000
1000191001
20010A1010
30011B1011
40100C1100
50101D1101
60110E1110
70111F1111

Om van binair naar hexadecimaal te gaan, groepeer je vanaf rechts. Het patroon 10011100 wordt 1001 1100, oftewel 0x9C. Vul een kortere laatste groep links aan met voorloopnullen: 101101 wordt 0010 1101, oftewel 0x2D. Als je vanaf links zou groeperen als 1011 01, zouden de cijfers op de verkeerde plaatsen komen.

Om terug te rekenen, schrijf je elk cijfer als vier bits. Zo wordt 0x3E8 gelijk aan 0011 1110 1000. Behoud alle vier bits binnen elke groep, ook als een groep met nullen begint. Alleen nullen helemaal links van het hele getal kun je weglaten zonder de waarde te veranderen.

Gebruik plaatswaarden met grondtal 16

Van rechts naar links zijn de hexadecimale plaatswaarden 1, 16, 256 en 4.096. Vermenigvuldig de waarde van elk cijfer met de bijbehorende plaatswaarde en tel de uitkomsten op. Voor 0x2F is de berekening 2×16+15=47. Voor 0x3E8:

3×256+14×16+8=768+224+8=1000

Van decimaal naar hexadecimaal omrekenen werkt ook door herhaald te delen, nu door 16. Voor 1.000 is het eerste quotiënt 62 met rest 8. Als je 62 deelt, krijg je quotiënt 3 met rest 14, geschreven als E. Als je 3 deelt, krijg je quotiënt 0 met rest 3. Lees de resten van onder naar boven: 3, E, 8.

De groepering werkt door de plaatswaarde, niet alleen door een tabel met overeenkomsten. In een hexadecimaal getal van twee cijfers draagt de linkernibble zijn waarde maal 16 bij en de rechternibble zijn waarde maal 1. Binair vermenigvuldigt het vier plaatsen naar links verschuiven van een nibble de waarde ook met 16. Door die gemeenschappelijke factor kun je de twee groepen afzonderlijk lezen zonder eerst het hele getal naar decimaal om te rekenen.

Herken veelvoorkomende toepassingen

Eén byte is twee nibbles, dus precies twee hexadecimale cijfers, van 0x00 tot en met 0xFF. Een programma dat bytes weergeeft, kan een lang bestand hexadecimaal vier keer zo compact tonen als binair, terwijl de grenzen tussen de groepen zichtbaar blijven.

Webkleuren zoals #FF8000 gebruiken paren hexadecimale cijfers voor rood, groen en blauw. Ook geheugenadressen en Unicode-codepunten zoals U+00E9 gebruiken hexadecimale notatie. Een MAC-adres zoals 3C:22:FB:9A:01:7E schrijft zes bytes als twaalf hexadecimale cijfers, met scheidingstekens tussen de bytes.

Het voorvoegsel 0x, een subscript voor het grondtal zoals 2F16, of de # in een kleurcode geeft de notatie aan. De computer slaat dezelfde bits op, ongeacht de notatie die iemand gebruikt. Zo betekent 0x10 zestien. De waarde vijftien is het enkele cijfer F; als je “15” schrijft, gebruik je twee hexadecimale posities en betekent het eenentwintig.

Belangrijkste punten

  • Hexadecimale notatie gebruikt 0–9 en A–F, waarbij A–F voor 10–15 staan.
  • Groepeer binaire cijfers vanaf rechts in groepen van vier om naar hexadecimaal om te rekenen.
  • Eén byte is precies twee hexadecimale cijfers.
  • Hexadecimale plaatswaarden zijn machten van 16; een andere notatie verandert de opgeslagen bits niet.
2

Sla gehele getallen op met een vaste bitbreedte

Een vast aantal bits kan slechts een vaste verzameling gehele getallen bevatten. De gekozen interpretatie bepaalt of al die patronen niet-negatieve waarden weergeven of dat sommige negatieve waarden weergeven. Je leest dezelfde byte op beide manieren, kiest bitbreedtes die bij een vereist bereik passen en volgt wat er aan de uiteinden gebeurt. Tweecomplement verklaart ook hoe negatieve waarden hun betekenis behouden als hun bitbreedte groter wordt.

2.1 Waarden zonder teken en overloop

Een geheel getal zonder teken geeft een niet-negatief geheel getal weer. Alle bits hebben gewone positieve binaire gewichten. De bitbreedte bepaalt hoeveel posities beschikbaar zijn, dus kan een byte geen negende bit krijgen alleen omdat een resultaat die nodig heeft.

Bepaal het bereik

Voor n bits zijn er 2n patronen. Als je bij nul begint, krijg je het bereik 0 tot en met 2n−1. De grootste waarde heeft op elke positie een 1:

BitbreedteBereik zonder teken
8 bits0–255
16 bits0–65.535
32 bits0–4.294.967.295

Het aantal beschikbare waarden en de maximale waarde verschillen één. Met acht bits zijn 256 mogelijkheden beschikbaar, maar 256 zelf heeft negen posities nodig, 1 0000 0000.

Een opgeslagen waarde vult de bitbreedte met voorloopnullen. Zo is 45 in 16 bits gelijk aan 0000000000101101, oftewel 0x002D. Die nullen geven de bitbreedte aan zonder de waarde te veranderen. Een negatief getal heeft geen representatie zonder teken, welke bitbreedte je ook kiest.

Kies genoeg posities

Een leeftijdsbereik van 0 tot en met 150 past in 8 bits omdat 150 kleiner is dan 255. Een telling van 0 tot en met 100.000 bevat 100.001 mogelijke waarden. Zestien bits bieden maar 65.536 patronen. Zeventien bieden er 131.072, dus is 17 de minimale wiskundige bitbreedte. Een programma dat de gangbare breedtes 8, 16, 32 en 64 gebruikt, zou 32 bits kiezen.

Dezelfde redenering geldt voor elke begrensde teller: controleer de grootste waarde die de teller daadwerkelijk moet bevatten, met inbegrip van beide grenzen. Een bereik van 0 tot en met 256 heeft 257 patronen nodig en past daarom niet in één byte.

Een nuttige grenscontrole vergelijkt opeenvolgende bitbreedtes. Het maximum zonder teken voor 8 bits is 255 en voor 9 bits is het 511. Een bit toevoegen verdubbelt het aantal patronen; het maximum wordt twee keer het oude maximum plus één. Dit onderscheid is van belang als een vereiste precies op een macht van twee uitkomt: die grenswaarde heeft een nieuwe positie nodig, ook al heeft de vorige bitbreedte zoveel patronen.

Volg een resultaat buiten het bereik

Overloop betekent dat een resultaat niet in de gekozen representatie past. Als een berekening met 8 bits alleen de laagste acht bits bewaart, levert 255 plus 1 de uitkomst 1 0000 0000 op en wordt 00000000 opgeslagen: nul. De extra positie wordt weggegooid.

Voor 200 plus 100 is het wiskundige resultaat 300. Bij deze bitbreedte wordt de rest na een volledige cyclus van 256 patronen bewaard: 300−256=44. De opgeslagen byte is 00101100. Dit gedrag heet cyclische overloop (wraparound). Het verandert niets aan het rekenkundige feit dat 200 plus 100 gelijk is aan 300; het beschrijft wat de beperkte opslag bewaart.

Het gedrag bij overloop hangt af van het systeem. Sommige bewerkingen lopen cyclisch over, sommige melden een fout en sommige getaltypen worden groter. Bij een berekening over cyclische overloop moet dat gedrag vaststaan voordat je hoge bits weggooit.

Herken vaste bitbreedtes in gegevens

Een IPv4-adres heeft 32 bits, wat ongeveer 4,3 miljard mogelijke patronen geeft. Die eindige adresruimte droeg bij aan de behoefte aan een groter adresseringssysteem. Een gewoon RGB-kleurkanaal heeft 8 bits, wat de intensiteitsschaal van 0–255 verklaart. Het maximum volgt in beide gevallen uit de bitbreedte; een langere decimale schrijfwijze voegt geen opslagcapaciteit toe.

Belangrijkste punten

  • Een geheel getal zonder teken van n bits loopt van 0 tot en met 2ⁿ − 1.
  • Tel beide grenswaarden mee wanneer je een bitbreedte kiest.
  • Voorloopnullen vullen een bitbreedte zonder een waarde zonder teken te veranderen.
  • Overloop betekent dat een resultaat buiten het weergeefbare bereik valt.
  • Als een systeem alleen de laagste n bits bewaart, lopen waarden zonder teken cyclisch over in cycli van 2ⁿ.

2.2 Negatieve gehele getallen in tweecomplement

Een negatief geheel getal heeft een representatieregel nodig, niet alleen een minteken naast een byte. Tweecomplement geeft de hoogste bit een negatief gewicht. De overige posities behouden hun positieve gewicht, zodat elk patroon één waarde met teken heeft en nul één patroon heeft.

Vergelijk twee interpretaties met teken

Een eenvoudiger schema, de teken-grootterepresentatie, gebruikt de hoogste bit alleen voor het teken en de overige bits voor de grootte. In 8 bits is +5 gelijk aan 00000101 en −5 aan 10000101. Het schema heeft twee nullen, 00000000 en 10000000, en voor optellen met verschillende tekens zijn extra regels nodig.

In tweecomplement met 8 bits zijn de gewichten −128, 64, 32, 16, 8, 4, 2 en 1. Dus betekent 11010011 dat −128+64+16+2+1=−45. Als je de andere zeven bits als een grootte van 83 leest, krijg je −83, wat bij een andere representatie hoort.

BitbreedteBereik van tweecomplement
8 bits−128–127
16 bits−32.768–32.767
32 bits−2.147.483.648–2.147.483.647

In het algemeen is het bereik −2n−1 tot en met 2n−1−1. Nul en positieve waarden zien eruit als gewone binaire getallen met een 0 vooraan. Alleen enen geven −1 weer.

Schrijf een negatieve waarde

Om het teken van een weergeefbare waarde om te keren, keer je elke bit om en tel je er 1 bij op, waarbij je de bitbreedte vast houdt. Om −45 in 8 bits te coderen:

  1. Schrijf +45 als 00101101.
  2. Keer alle acht bits om: 11010010.
  3. Tel 1 op: 11010011, oftewel 0xD3.

Als je na het omkeren stopt, krijg je −46. Als je het hele proces op 11010011 toepast, krijg je weer 00101101 en daarmee +45.

Een andere manier codeert −x als de waarde zonder teken 2n−x. Hier is 256−45=211, waarvan de binaire vorm 11010011 is. De byte betekent dus 211 zonder teken of −45 met teken. De bits zijn niet veranderd; het type wel.

Voor omkeren gevolgd door optellen is ook een rekenkundige verklaring. Bij een positieve waarde x van n bits verandert omkeren die in de waarde zonder teken 2n−1−x. Als je daar één bij optelt, krijg je 2n−x, waarvan de interpretatie met teken −x is. Dit verbindt de bitmethode met de aftrekmethode en verklaart waarom het weglaten van de laatste 1 de verkeerde negatieve waarde geeft.

Behoud een waarde met teken in meer bits

Bij tekenuitbreiding kopieer je de hoogste bit naar de nieuwe posities links. −3 in vier bits is 1101; in 8 bits is dat 11111101. Het negatieve gewicht van de hoogste bit en de toegevoegde positieve gewichten zijn samen nog steeds −3. Als je met nullen zou aanvullen, kreeg je 00001101, oftewel +13. Positieve waarden worden met nullen uitgebreid: 0011 wordt 00000011.

Herken de grenswaarden

Tweecomplement ondersteunt gewone binaire optelling voor resultaten die passen. In 4 bits geeft 0101 plus 1101, oftewel 5 plus −3, de uitkomst 1 0010. Als je de laagste vier bits bewaart, krijg je 0010, oftewel 2. Zo kan dezelfde basishardware voor optellen waarden met en zonder teken verwerken.

Een resultaat buiten het bereik is anders: 127 plus 1 in 8 bits laat 10000000 over, wat als −128 wordt gelezen. Ook heeft −128 geen positieve tegenhanger in 8 bits. Als je 10000000 omkeert en er 1 bij optelt, krijg je 10000000 terug omdat +128 buiten het bereik ligt. Maak de representatie breder voordat je die positieve waarde vormt.

Belangrijkste punten

  • De hoogste bit heeft gewicht −2ⁿ⁻¹ in tweecomplement met n bits.
  • Tweecomplement heeft één nul en één negatieve waarde meer dan er positieve waarden zijn.
  • Keer het teken om door elke bit om te keren en 1 op te tellen binnen de vaste bitbreedte.
  • Tekenuitbreiding kopieert de hoogste bit naar toegevoegde posities.
  • De meest negatieve waarde heeft geen positieve tegenhanger met dezelfde bitbreedte.
  • Hetzelfde patroon kan met en zonder teken een andere betekenis hebben.
3

Sla breuken en drijvendekommawaarden op

De posities voor gehele getallen lopen rechts van de binaire komma door als helften, kwarten en kleinere breuken. Sommige decimale breuken eindigen binair, terwijl andere een eindeloos patroon vereisen. Vastekommarepresentatie reserveert een vast aantal posities voor de breuk; drijvendekommarepresentatie slaat naast een mantisse ook een schaal op. Door deze formaten te lezen begrijp je zowel hun grote bereik als hun afrondingsfouten, waaronder het bekende resultaat van 0,1 en 0,2 optellen.

3.1 Binaire breuken en vastekommarepresentatie

De eerste positie na de binaire komma is een half. Elke volgende positie is de helft van de vorige: een kwart, een achtste, een zestiende, enzovoort. Een 1 telt die breuk mee; een 0 laat die weg. De posities voor gehele getallen links behouden hun gebruikelijke machten van twee.

Lees en maak een binaire breuk

Voor 101,1012 is het gehele deel 4 plus 1. Het breukdeel is een half plus een achtste, wat 4+1+0,5+0,125=5,625 geeft.

Om een decimale breuk om te rekenen, vermenigvuldig je die herhaaldelijk met 2. Het gehele deel van elk resultaat is het volgende binaire cijfer; bewaar alleen het breukdeel voor de volgende vermenigvuldiging. Voor 0,375:

  1. 0,375×2=0,75, dus is de eerste bit 0.
  2. 0,75×2=1,5, dus is de volgende bit 1; bewaar 0,5.
  3. 0,5×2=1,0, dus is de volgende bit 1 en stopt het proces.

Het resultaat is 0,0112. De waarde is een kwart plus een achtste, oftewel 0,375. Deze bits lees je in de gevonden volgorde, anders dan de resten bij het delen van gehele getallen.

Bepaal of de ontwikkeling eindigt

Vereenvoudig de breuk volledig. Die heeft precies dan een eindige binaire ontwikkeling als de noemer een macht van 2 is. Waarden zoals 0,5, 0,25, 0,75 en 0,375 voldoen daaraan. Zo is 0,375 gelijk aan 3/8 en is acht een macht van twee.

Decimaal 0,1 is 1/10. De noemer bevat een factor 5, dus herhaalt de binaire ontwikkeling zich: 0,0001100110011…2. Net zoals een derde niet kan eindigen in decimale notatie, kan een tiende niet eindigen in binaire notatie. De korte schrijfwijze “0,1” heeft daarom een benadering nodig als er slechts een beperkt aantal binaire posities beschikbaar is. Hetzelfde probleem geldt voor 0,2 en 0,3.

De noemerregel volgt uit de posities zelf. Een eindige reeks die bij de f-de positie van het breukdeel eindigt, kun je schrijven als een geheel getal gedeeld door 2f. Vereenvoudiging van die breuk kan factoren twee wegnemen, maar kan geen andere priemfactor in de noemer introduceren. Een vereenvoudigde noemer die vijf bevat, kan daarom niet gelijk zijn aan zo’n eindige binaire som.

Reserveer een vaste schaal

Een vastekommarepresentatie geeft een vast aantal bits aan het breukdeel. Met vier bits voor het gehele deel en vier voor het breukdeel betekent 0110,1000 de waarde 6,5. De kleinste stap is 2−4=0,0625 en de grootste waarde zonder teken is 1111,1111, oftewel 15,9375.

Anders gezegd: het opgeslagen gehele getal van acht bits wordt geschaald met 1/16. Het patroon 01101000 heeft de waarde zonder teken 104; gedeeld door 16 geeft dat 6,5. De komma maakt deel uit van de interpretatie en hoeft dus niet als extra symbool te worden opgeslagen.

Als je in totaal acht bits houdt maar vijf bits voor het gehele deel en drie voor het breukdeel gebruikt, wordt de stap 0,125 en het maximum 31,875. Je wint bereik maar verliest fijne tussenstappen. Vastekommarepresentatie geeft veelvouden van de stap binnen het bereik exact weer.

Een exact aantal centen gebruikt een verwant schaalidee: 19,99 geldeenheden wordt het gehele getal 1999 cent. Voor metingen van zeer verschillende groottes slaat drijvendekommarepresentatie een verschuifbare schaal op, zodat dezelfde bitbreedte een veel groter bereik beslaat dan bij vastekommarepresentatie.

Belangrijkste punten

  • Binaire breukposities zijn 1/2, 1/4, 1/8, enzovoort.
  • Vermenigvuldig een breukdeel met 2 en lees de gehele delen op volgorde.
  • Een vereenvoudigde breuk eindigt precies dan binair als de noemer een macht van 2 is.
  • Bij een vaste totale bitbreedte weeg je in vastekommarepresentatie bereik af tegen de resolutie van het breukdeel.

3.2 Lees en schrijf IEEE 754-velden

Drijvendekommarepresentatie schrijft een waarde in binaire wetenschappelijke notatie. Zo is 6,25 gelijk aan 110,012=1,10012×22. Het voorste deel is de mantisse en de exponent bepaalt de schaal. IEEE 754 definieert veelgebruikte formaten om deze delen op te slaan.

Ken de velden
FormaatTotaalTekenExponentFractieVerschuiving
Enkel, binary3232 bits1823127
Dubbel, binary6464 bits111521023

Voor een normale waarde is de interpretatie (−1)s×(1,f)2×2E−verschuiving. Hier is s de tekenbit, E de opgeslagen exponent zonder teken en f het fractieveld. Een tekenbit van 0 betekent positief; 1 betekent negatief. Als je alleen de tekenbit verandert, keer je het teken van een drijvendekommawaarde om.

De opgeslagen exponent is gelijk aan de werkelijke exponent plus de exponentverschuiving. Bij enkele precisie wordt exponent 2 gelijk aan 129, oftewel 10000001; exponent −3 wordt 124, oftewel 01111100. Normale opgeslagen exponenten lopen van 1 tot en met 254 en geven −126 tot en met 127 weer.

Een normale binaire mantisse begint altijd met 1, dus laat het formaat die impliciete bit weg. Alleen de bits na de komma komen in het fractieveld. Dit geeft 24 significante binaire cijfers bij enkele precisie en 53 bij dubbele precisie.

Codeer −6,25 stap voor stap

Normaliseer eerst de grootte: 110,012=1,10012×22. Vul daarna de velden:

  1. Negatieve waarde: teken 1.
  2. Exponent 2: tel 127 op voor 129, geschreven als 10000001.
  3. Fractie ,1001: sla 1001 op gevolgd door 19 nullen.

Het resultaat is 1 10000001 10010000000000000000000, oftewel 0xC0C80000. De fractie wordt rechts aangevuld omdat deze posities na de komma doorlopen. Als je de voorste 1 zou opslaan, zou de betekenis van de fractie verschuiven.

Een negatieve werkelijke exponent brengt de schaal onder één. Voor 0,15625 is de binaire vorm 0,001012=1,012×2−3. De tekenbit in binary32 is 0 en de opgeslagen exponent is 124, oftewel 01111100. De fractie begint met 01 en wordt rechts aangevuld. De impliciete 1 hoort nog steeds bij de genormaliseerde mantisse, ook al is het volledige getal kleiner dan één.

Decodeer een patroon

Het patroon 0x41200000 met enkele precisie valt uiteen in 0 10000010 01000000000000000000000. Het teken is positief. Het exponentveld is 130, dus trek je 127 af om 3 te krijgen. Herstel de impliciete 1 om 1,012=1,25 te krijgen. Tot slot is 1,25×23=10.

Controleer eerst gereserveerde exponenten

De formule voor normale waarden beschrijft niet elk patroon:

ExponentveldFractieveldBetekenis
Allemaal nullenNul+0 of −0, gekozen door het teken
Allemaal nullenOngelijk aan nulEen subnormale waarde, met 0 vooraan
Allemaal enenNulPositieve of negatieve oneindigheid
Allemaal enenOngelijk aan nulNaN, “geen getal”

Subnormale waarden geven zeer kleine waarden weer zonder de impliciete 1. NaN kan het resultaat zijn van een ongeldige numerieke bewerking zoals 0 gedeeld door 0. IEEE 754-2019 definieert deze formaten.

Belangrijkste punten

  • Enkele precisie heeft velden van 1, 8 en 23 bits; dubbele precisie heeft 1, 11 en 52 bits.
  • Trek de exponentverschuiving af bij het decoderen; tel die op bij het coderen.
  • Normale waarden hebben een voorste 1 die niet wordt opgeslagen.
  • Vul het fractieveld rechts aan met nullen.
  • Exponentvelden met alleen nullen of alleen enen hebben een speciale betekenis.
  • De teken- en exponentvelden van een drijvendekommagetal vormen geen geheel getal in tweecomplement.

3.3 Bereik, precisie en afrondingsfout

Een formaat voor drijvendekommagetallen kan een enorm bereik bestrijken zonder elke waarde in dat bereik weer te geven. De exponent bepaalt de schaal; het fractieveld bepaalt hoeveel significante bits nabijgelegen waarden onderscheiden. Bereik en precisie beantwoorden verschillende vragen.

Vergelijk enkele en dubbele precisie

Enkele precisie reikt tot ongeveer 3,4×1038 en heeft ongeveer zeven significante decimale cijfers. De kleinste positieve normale waarde is ongeveer 1,18×10−38. Dubbele precisie reikt tot ongeveer 1,8×10308, heeft ongeveer 15–16 significante decimale cijfers en een kleinste positieve normale waarde van ongeveer 2,2×10−308. Subnormale waarden komen bij elk formaat onder het normale minimum.

Significante cijfers tel je vanaf het eerste betekenisvolle cijfer, niet vanaf de decimale komma. Een grote exponent levert niet meer fractiebits op. Bij enkele precisie is de afstand boven 1 gelijk aan 2−23≈1,19×10−7. Tussen 224 en 225 is de afstand 2, dus is het gehele getal 16.777.217 niet beschikbaar, hoewel het ver onder de maximale eindige waarde ligt.

Rond af op een waarde die past

De standaardregel van IEEE 754 is afronden naar de dichtstbijzijnde waarde, naar even bij gelijke afstand. Kies de dichtstbijzijnde weergeefbare waarde; kies bij een waarde precies halverwege de waarde waarvan de laatst behouden mantissebit even is. Zo wordt 16.777.217 bij enkele precisie afgerond op 16.777.216.

Het verschil tussen de bedoelde waarde en de opgeslagen waarde is de afrondingsfout. Bij enkele precisie wordt 0,1 opgeslagen als 0,100000001490116119384765625. Bij dubbele precisie is dat ongeveer 0,10000000000000000555. Meer precisie verkleint deze fout, maar kan een repeterende ontwikkeling niet laten eindigen.

Begrijp een bekend resultaat

Bij gewone berekeningen met dubbele precisie volgens IEEE 754 levert het optellen van 0,1 en 0,2 een opgeslagen resultaat op dat vaak wordt weergegeven als 0.30000000000000004. Het verschilt van de opgeslagen benadering van 0,3, dus is 0.1 + 0.2 == 0.3 onwaar in talen zoals Python en JavaScript. Vergelijk bij meetresultaten het verschil met een tolerantie die je kiest voor de schaal en het doel van de taak.

Veel waarden zijn exact. Dubbele precisie bevat elk geheel getal van −253 tot en met 253 exact. Waarden zoals 0,5 en 0,375 hebben ook korte binaire vormen die zowel in de mantisse als binnen het exponentbereik passen.

Kies een geschikt getaltype

Voor tellingen en identificatiecodes zijn gehele getallen geschikt. Voor exacte geldbedragen zijn gehele aantallen kleinere geldeenheden, zoals centen, of een decimaal getaltype geschikt. Voor metingen en wetenschappelijke berekeningen is drijvendekommarepresentatie vaak geschikt. Een waarde die qua grootte buiten het formaat valt, kan door overloop oneindig worden; volgens de standaardafrondingsregel wordt 1039 bij enkele precisie positief oneindig. Zeer kleine resultaten kunnen subnormaal worden of op nul worden afgerond.

Weergaveconventies staan los van opslag. De schrijfwijzen “3.14” en “3,14” kunnen in verschillende landen hetzelfde getal aanduiden. Een programma dat tekst leest, moet die conventie kennen; anders kan het de komma afwijzen of de waarde als 314 lezen. Een ander afgedrukt scheidingsteken verbetert de binaire precisie niet.

Belangrijkste punten

  • Het bereik bepaalt de grootteorde; de precisie bepaalt de afstand tussen nabijgelegen waarden.
  • Afstanden tussen drijvendekommagetallen groeien naarmate de grootte toeneemt.
  • De standaardregel rondt af naar de dichtstbijzijnde waarde en bij precies gelijke afstand naar een even laatste bit.
  • Een korte decimale breuk kan binair toch afronding nodig hebben.
  • Kies opslag als geheel getal, decimaal getal of drijvendekommagetal die bij de taak past.
4

Zet tekens om in codes en bytes

Voor tekst is een afspraak nodig tussen de software die de tekst schrijft en de software die deze leest. ASCII geeft een kleine verzameling tekens numerieke codes. Unicode biedt een gedeelde coderuimte voor veel schriftsystemen, terwijl coderingen zoals UTF-8 de daadwerkelijke bytes bepalen. Door onderscheid te maken tussen een weergegeven teken, een codepunt en een byte kun je tekstgroottes berekenen en uitleggen waarom een correct opgeslagen bestand verminkt kan verschijnen.

4.1 ASCII-codes en hun beperkingen

Om tekst op te slaan, kent een systeem numerieke codes toe aan tekens en schrijft het die getallen als bits. Een tekencode werkt alleen als de lezer dezelfde afspraak gebruikt als de schrijver. De byte voor een letter is een gecodeerd label; het is geen piepklein plaatje van die letter.

Lees de ASCII-tabel

ASCII, de American Standard Code for Information Interchange, werd voor het eerst gepubliceerd in 1963. ASCII gebruikt 7 bits voor 128 codes, genummerd van 0–127. Bij opslag in bytes vult een ASCII-code meestal één byte met een 0 vooraan.

CodesBetekenis
0–31 en 127Besturingstekens
32Spatie
48–57Cijfers “0”–“9”
65–90Hoofdletters “A”–“Z”
97–122Kleine letters “a”–“z”

Leestekens vullen de tussenruimtes. Codes 32–126 vormen 95 afdrukbare tekens, inclusief de spatie. Besturingstekens beïnvloeden de tekstverwerking zonder een zichtbaar symbool af te drukken: tab is 9, regeldoorvoer is 10 en wagenretour is 13.

Codeer een korte tekenreeks

De tekst “Hi!” heeft drie tekens. Hun decimale codes zijn 72, 105 en 33; hexadecimaal zijn dat 0x48, 0x69 en 0x21. Als volledige bytes wordt de tekst 01001000 01101001 00100001. Het uitroepteken heeft net als de letters een code nodig.

De code van een kleine ASCII-letter ligt 32 hoger dan die van de bijbehorende hoofdletter. “A” is 65, oftewel 01000001, terwijl “a” 97 is, oftewel 01100001. Die ene veranderde bit verklaart het verschil. Door de volgorde komen ook alle hoofdletters vóór alle kleine letters. Een eenvoudige sortering op code zet “Zebra” daarom vóór “appel”; die volgt niet de gewone woordenboekvolgorde.

Maak onderscheid tussen een cijfer en een getal

Het teken “7” heeft decimale code 55 en byte 00110111. Het gehele getal 7 heeft byte 00000111. Om de numerieke waarde van een cijfer uit de ASCII-code terug te krijgen, trek je 48 af, de code voor “0”: 55−48=7. Dit werkt omdat de tien cijfercodes opeenvolgend zijn.

De opslag hangt af van de gekozen representatie. De tekst “2026” heeft vier ASCII-bytes nodig, één per cijfer. Het gehele getal 2026 past in twee bytes als waarde zonder teken van 16 bits. Tekst bewaart de volgorde van de tekens; een geheel getal geeft de numerieke waarde weer. Zo kan een identificatiecode als tekst voorloopnullen bewaren die een geheel getal niet onderscheidt.

Om een langere tekenreeks te coderen, verwerk je elk teken op volgorde, inclusief spaties, leestekens en besturingstekens. Bij het decoderen zoek je met dezelfde tabel elke code één voor één in omgekeerde richting op. De volgorde is belangrijk: als je twee geldige codes verwisselt, kun je nog steeds geldige ASCII krijgen, maar wel andere tekst. Als codes worden herkend, bewijst dat niet dat ze de bedoelde volgorde of betekenis hebben.

Begrijp waarom codepagina’s problemen veroorzaakten

ASCII heeft geen letters met accenten zoals “é”, “ñ” of “ü”, en geen Griekse, Cyrillische, Arabische of Chinese tekens. Latere 8-bitscodepagina’s gebruikten waarden 128–255 voor extra symbolen, maar waren het niet eens over die toevoegingen.

Zo betekent byte 0xE9 “é” in Latin-1 maar “й” in Windows-1251. Windows-1252 is een andere veelgebruikte codepagina. Een bytewaarde kan een teken buiten ASCII daarom niet identificeren zonder dat de codering bekend is. De verkeerde tabel kan symbolen opleveren die leesbaar lijken, maar toch de verkeerde tekst vormen.

Belangrijkste punten

  • ASCII definieert 128 codes met 7 bits, meestal opgeslagen als één code per byte.
  • Afdrukbare tekens omvatten spaties en leestekens; besturingstekens hebben andere functies.
  • Cijfertekens hebben andere codes dan de gehele getallen die ze aanduiden.
  • Verschillende oudere codepagina’s kunnen verschillende tekens aan dezelfde byte toekennen.

4.2 Unicode-codepunten en UTF-coderingen

Unicode kent tekens uit schriftsystemen over de hele wereld getallen toe uit een gedeelde verzameling. Die getallen heten codepunten. “A” is U+0041, “é” is U+00E9, “Ж” is U+0416, “中” is U+4E2D en “😀” is U+1F600. De U+-notatie gebruikt hexadecimale cijfers met minstens vier posities.

Maak onderscheid tussen een codepunt en de bytes

De coderuimte loopt van U+0000 tot en met U+10FFFF, oftewel 1.114.112 posities, met meer dan 150.000 toegewezen tekens. Een codepunt duidt een teken of een gereserveerde positie aan; een tekencodering bepaalt de weergave in bytes.

CoderingOpslag voor een geldig codepunt van een teken
UTF-81–4 bytes
UTF-162 bytes tot en met U+FFFF; 4 bytes daarboven
UTF-324 bytes

Het surrogaatbereik U+D800–U+DFFF is gereserveerd voor het paarmechanisme van UTF-16; afzonderlijke surrogaten zijn geen geldige tekens om in deze vormen te coderen. Een paar UTF-16-code-eenheden geeft één aanvullend codepunt weer. Zo is “😀” in UTF-16 gelijk aan D83D DE00.

Lees de bytebereiken van UTF-8

UTF-8 behoudt ASCII: U+0000–U+007F gebruiken één byte. U+0080–U+07FF gebruiken er twee; geldige codepunten van tekens in U+0800–U+FFFF gebruiken er drie; U+10000–U+10FFFF gebruiken er vier. Daardoor is Engelse ASCII-tekst byte voor byte compatibel met UTF-8.

Een teken van één byte begint met 0. Langere tekens beginnen met 110, 1110 of 11110 voor respectievelijk twee, drie of vier bytes. Elke vervolgbyte begint met 10. De overige bits bevatten het codepunt.

Voor “é”, U+00E9, is de waarde in 11 bits 00011101001. Splits die in vijf bits en zes bits: 00011 en 101001. Vul die in op de plaatsen van 110xxxxx 10xxxxxx en je krijgt 11000011 10101001, oftewel C3 A9. Het codepunt 00E9 is niet zelf de UTF-8-bytereeks.

Bij coderen en decoderen moet je ook rekening houden met de voorvoegsels van de bytes. Een UTF-8-vervolgbyte is geen zelfstandige ASCII-byte: de eerste twee bits zijn 10, dus hoort die binnen een langere tekenreeks. Als je bij een bytelimiet een deel van een teken met meerdere bytes verwijdert, kan een onvolledige reeks overblijven. De opslaglengte en de grenzen waarop je tekst kunt splitsen, hangen dus samen.

Tel de juiste eenheden

“café” heeft vier weergegeven tekens maar vijf UTF-8-bytes: 63 61 66 C3 A9. “€” gebruikt E2 82 AC, drie bytes; “中” gebruikt E4 B8 AD, ook drie; “😀” gebruikt F0 9F 98 80, vier. Een bytelimiet kan dus minder tekens toelaten dan de numerieke grootte doet vermoeden.

Eén weergegeven teken kan ook meerdere codepunten bevatten. “é” kan U+00E9 zijn of “e” gevolgd door U+0301, een combinerend accent aigu. De tweede vorm gebruikt drie UTF-8-bytes, 65 CC 81. Normalisatie zet equivalente reeksen om naar een gemeenschappelijke vorm om ze te vergelijken. De weergegeven emoji “👍🏽” bevat twee codepunten, U+1F44D en U+1F3FD, samen acht UTF-8-bytes.

Onderzoek verminkte tekst

Als je “café” in UTF-8 als Windows-1252 leest, wordt het “café”: C3 en A9 worden als afzonderlijke tekens behandeld. Dit is verminkte tekst door verkeerde tekencodering, veroorzaakt door decoderen met de verkeerde codering. Met de juiste decodering kun je de tekst herstellen zolang de oorspronkelijke bytes intact blijven. Een webpagina kan de codering opgeven met <meta charset="utf-8">.

Belangrijkste punten

  • Een codepunt duidt een teken aan; een tekencodering bepaalt de bytes ervan.
  • UTF-8 gebruikt één tot vier bytes en behoudt ASCII ongewijzigd.
  • Vervolgbytes in UTF-8 beginnen met 10.
  • Een weergegeven teken, een codepunt en een byte zijn verschillende teleenheden.
  • Normalisatie kan equivalente tekenreeksen op dezelfde vorm brengen.
  • Decoderen met de verkeerde codering kan verminkte tekst opleveren.
5

Meet beeld en geluid in bits

Afbeeldingen en opnamen zetten visuele en geluidsdetails om in getallen. Een rasterafbeelding slaat een raster met pixelwaarden op; bemonsterde audio slaat metingen op die op regelmatige tijdstippen zijn gedaan. De benodigde opslag hangt af van het aantal bewaarde waarden en het aantal bits dat elke waarde nodig heeft. Deze keuzes beïnvloeden ook welke details behouden blijven. Vectortekeningen en MIDI volgen een andere aanpak: ze beschrijven vormen of noten als instructies die een apparaat later omzet in beeld of geluid.

5.1 Pixels, RGB, kleurenpaletten en transparantie

Een rasterafbeelding is een raster van pixels. Elke pixel bevat een kleurwaarde. De breedte en hoogte geven de resolutie van de afbeelding aan: 1920 bij 1080 betekent 1920×1080=2.073.600 pixels. Een pixelaantal beschrijft het raster, niet de afgedrukte grootte in meters.

Ken genoeg bits toe aan elke pixel

De kleurdiepte is het aantal bits dat voor de kleur van een pixel wordt gebruikt. Een diepte van k bits maakt 2k mogelijke codes mogelijk. Eén bit kan twee kleuren onderscheiden. Grijstinten met acht bits kunnen 256 intensiteiten onderscheiden, meestal van 0 voor zwart tot en met 255 voor wit.

Een eenvoudige afbeelding van 3 bij 3 kan 1 voor zwart en 0 voor wit gebruiken. Een zwart plusteken wordt weergegeven door de rijen 010, 111 en 010. Negen pixels van elk één bit hebben negen bits aan pixelinformatie nodig. De werkelijke opslag in een bestand kan naast die bits opvulling en andere informatie bevatten.

Meng licht met RGB

RGB slaat intensiteiten van rood, groen en blauw licht op. Met 8 bits per kanaal loopt elke intensiteit van 0 tot en met 255 en gebruikt een pixel 24 bits. Het aantal mogelijke kleuren is 2563=224=16.777.216.

RGB-waardenKleur
(0, 0, 0)Zwart
(255, 255, 255)Wit
(255, 0, 0)Rood
(0, 0, 255)Blauw
(255, 255, 0)Geel

RGB is additieve menging van licht. Rood en groen licht samen geven geel. Een voorspelling op basis van het mengen van verf gebruikt een ander proces en levert het verkeerde model voor een scherm op.

Lees hexadecimale kleurcodes

Een webkleur gebruikt #RRGGBB: twee hexadecimale cijfers voor rood, dan groen en dan blauw. #FF8000 betekent (255, 128, 0), een oranje tint. #808080 betekent (128, 128, 128), een middengrijze tint; gelijke kanaalwaarden leveren grijs op. #0000FF geeft de grootste blauwe waarde met rood en groen op nul.

Elk paar is één byte. FF is dus 255, niet een paar afzonderlijke kleurintensiteiten. De # markeert de hele RGB-code en neemt geen kanaal in.

Het RGB-model en het paletmodel zoeken een pixelwaarde op verschillende manieren op. Bij directe RGB geeft het lezen van de pixel onmiddellijk de drie kanaalintensiteiten. Bij geïndexeerde kleur geeft het lezen van de pixel een nummer van een tabelvermelding en levert een tweede opzoeking de intensiteiten. Als je een paletvermelding verandert, kunnen daardoor veel weergegeven pixels met dezelfde index veranderen, terwijl hun opgeslagen pixelindices ongewijzigd blijven.

Sla een paletindex op

Als een afbeelding weinig kleuren gebruikt, kan die een kleurenpalet bewaren, een tabel met de geselecteerde kleuren. Een pixel slaat dan een index naar die tabel op. Een palet van 16 kleuren heeft vier bits per pixel nodig omdat vier bits 16 vermeldingen onderscheiden. Het palet zelf neemt ook opslagruimte in. GIF gebruikt maximaal 256 paletkleuren, zodat een index van 8 bits per pixel mogelijk is.

Voeg transparantie toe

Een alfakanaal beschrijft de ondoorzichtigheid. Een veelgebruikte schaal van 8 bits gebruikt 0 voor volledig transparant en 255 voor volledig ondoorzichtig, met tussenliggende waarden voor gedeeltelijke transparantie. Als je dat kanaal toevoegt aan RGB van 24 bits, krijg je RGBA van 32 bits. Alfa staat los van rood, groen en blauw: een volledig transparante pixel kan nog steeds opgeslagen kleurwaarden hebben die in de uiteindelijke afbeelding niet zichtbaar zijn.

Belangrijkste punten

  • Een rasterafbeelding slaat een raster met pixelwaarden op.
  • De kleurdiepte bepaalt het aantal beschikbare kleurcodes per pixel.
  • Gewone RGB gebruikt drie kanalen van 8 bits, samen 24 bits.
  • Een paletindex selecteert een kleur uit een tabel.
  • Een alfakanaal voegt informatie over ondoorzichtigheid toe; alfa van 8 bits maakt van RGB een RGBA van 32 bits.

5.2 Bereken de opslagruimte voor afbeeldingen en video

De pixelgegevens van een ongecomprimeerde rasterafbeelding groeien met het aantal pixels en het aantal bits per pixel. Als je de eenheden bij elke stap vermeldt, kun je de hoeveelheid informatie onderscheiden van de bestandsgrootte in bytes die een programma voor bestandsweergave toont.

Bereken de pixelgegevens

Gebruik bits=breedte×hoogte×bits per pixel. Deel door 8 voor het aantal bytes. Je moet breedte en hoogte vermenigvuldigen omdat elke rij de volledige breedte aan pixels bevat.

Bepaal voor 1920 bij 1080 met 24 bits per pixel eerst het aantal van 2.073.600 pixels. Vermenigvuldig met 24 voor 49.766.400 bits en deel dan door 8 voor 6.220.800 bytes. Dat is ongeveer 6,2 MB, oftewel 5,93 MiB. Een andere eenheid verandert de onderliggende pixelgegevens niet.

Voor 640 bij 480 met 8-bitsgrijstinten zijn er 307.200 pixels. Acht bits per pixel geven 2.457.600 bits; gedeeld door 8 is dat 307.200 bytes, ongeveer 307 kB. Hier is door die ene byte per pixel het uiteindelijke aantal bytes gelijk aan het aantal pixels.

Voorspel veranderingen voordat je rekent

Als je de breedte verdubbelt, verdubbelt het aantal pixels in elke rij. Als je de hoogte verdubbelt, verdubbelt het aantal rijen. Als je beide verdubbelt, worden het aantal pixels en de benodigde opslag dus vier keer zo groot. Als je de diepte van 8 naar 24 bits per pixel verhoogt, verdrievoudigt de opslag bij dezelfde resolutie. Deze factoren vermenigvuldigen als beide veranderen.

De ruwe berekening geeft de pixelgegevens, niet noodzakelijk een volledig afbeeldingsbestand. Een bestand slaat ook metadata op, zoals breedte, hoogte, kleurdiepte en formaat. Een foto kan camera-instellingen, datum en locatie vastleggen. Palettabellen, headers, opvulling en compressie kunnen de uiteindelijke grootte in bytes ook veranderen.

Bereken bij een diepte onder acht bits eerst de volledige hoeveelheid pixelgegevens in bits voordat je omrekent. Een afbeelding van 100 bij 60 met één bit per pixel bevat 6.000 pixelbits, oftewel 750 verpakte bytes. Als je elke pixel als een byte zou behandelen, zou je die hoeveelheid acht keer te groot inschatten. Als een formaat elke rij tot een bepaalde grens aanvult, moet je die opvulling afzonderlijk toevoegen; de kleurdiepte verandert daardoor niet.

Breid de berekening uit naar video

Een video toont een reeks afbeeldingen die videobeelden heten. Bij 30 beelden per seconde heeft RGB-video van 1920 bij 1080 elke seconde 6.220.800×30=186.624.000 bytes aan ongecomprimeerde beeldgegevens nodig, ongeveer 187 MB/s. Vermenigvuldig met de duur voor de totale hoeveelheid beeldgegevens. Geluid vraagt extra opslagruimte.

Deze hoge snelheid verklaart waarom gewone videobestanden worden gecomprimeerd. De snelheid van een gecomprimeerde video is een afzonderlijke grootheid; die kun je niet alleen uit de resolutie afleiden.

Vergelijk raster- en vectorafbeeldingen
RasterafbeeldingVectorafbeelding
Slaat een raster met kleurwaarden opSlaat vormen en tekeninstructies op
Geschikt voor foto’s en textuurGeschikt voor logo’s, diagrammen en lettercontouren
Bij vergroten van het raster worden pixels zichtbaarVormen kunnen op grotere schaal opnieuw worden getekend

Een vectorbestand kan een lijn van (0, 0) naar (100, 50) beschrijven, of een cirkel met een middelpunt, straal en vulkleur. Het hoeft geen afzonderlijke kleurwaarde op te slaan voor elk punt binnen de cirkel. Eenvoudige tekeningen kunnen daarom klein zijn. SVG is een veelgebruikt vectorformaat.

Een scherm heeft nog steeds pixels nodig. Rasterisatie zet de vormen om in een pixelraster op de gevraagde grootte. Als je vectorinstructies schaalt, blijft de geometrie van de vorm behouden; als je een bestaande rasterafbeelding vergroot, kun je geen beelddetail terughalen dat het oorspronkelijke raster nooit heeft vastgelegd.

Belangrijkste punten

  • Het aantal bits van een ongecomprimeerde rasterafbeelding is breedte × hoogte × bits per pixel.
  • Deel bits door 8 voordat je het aantal bytes opgeeft.
  • Als je beide afmetingen verdubbelt, verviervoudigen de pixelgegevens bij dezelfde diepte.
  • De ruwe beeldgegevens van video zijn bytes per beeld × beelden per seconde × duur.
  • Door metadata en compressie verschilt de bestandsgrootte van een ruwe pixelberekening.
  • Vectorafbeeldingen slaan vormen op die voor de weergave worden gerasterd.

5.3 Bemonster geluid en bereken de audiogrootte

Geluid is een trilling van de luchtdruk. Een microfoon zet die om in een analoog elektrisch signaal dat voortdurend verandert. Een analoog-digitaalomzetter doet regelmatige metingen, samples genoemd, en slaat elke meting als getal op.

Maak onderscheid tussen timing en meetdetail

De bemonsteringsfrequentie, gemeten in hertz, is het aantal samples dat per seconde per kanaal wordt genomen. Een frequentie van 44.100 Hz is 44,1 kHz. Cd’s gebruiken 44,1 kHz, geluidssporen bij video gebruiken vaak 48 kHz en traditionele telefoonaudio gebruikt 8 kHz. Samples leggen waarden op die tijdstippen vast; ze vormen geen continue registratie van elk tussenliggend moment.

De bitdiepte bepaalt hoeveel niveaus elke sample kan gebruiken. Acht bits geven 256 niveaus, 16 geven er 65.536 en 24 geven er 16.777.216. Een meting afronden op een niveau heet kwantisatie. Het verschil met de oorspronkelijke meting veroorzaakt een kwantisatiefout, die als ruis hoorbaar kan zijn. Meer bits bieden fijnere niveaus en verkleinen die fout.

De bemonsteringsfrequentie bepaalt het detail in de tijd; de bitdiepte bepaalt het detail in de gemeten amplitude. Als je de ene verhoogt, vervangt dat niet het verhogen van de andere.

Leg het frequentiebereik vast

Het bemonsteringstheorema vereist een bemonsteringsfrequentie die groter is dan twee keer de hoogste frequentie die je vastlegt. Om 20 kHz vast te leggen, moet de frequentie hoger zijn dan 40 kHz. Precies twee keer is onvoldoende voor een willekeurig signaal op de grens.

Bij 44,1 kHz ligt de theoretische grens onder 22,05 kHz. De ruimte boven ongeveer 20 kHz, de geschatte bovengrens van het menselijk gehoor, biedt plaats voor een anti-aliasingfilter. Frequenties boven de helft van de bemonsteringsfrequentie kunnen als onjuiste lagere frequenties verschijnen; dat heet aliasing. Een omzetter filtert die hoge frequenties vóór de bemonstering weg.

Een frequentie van 44.100 Hz geldt voor elk kanaal, niet voor de opname als gecombineerde stroom. Stereo slaat daarom elke seconde 88.200 samplewaarden op. De kanaalfactor hoort in de opslagformule omdat elk tijdstip een linker- en een rechterwaarde heeft. Die factor verdubbelt niet de hoogste frequentie die elk kanaal kan vastleggen; die grens volgt nog steeds uit de eigen bemonsteringsfrequentie van het kanaal.

Bereken ongecomprimeerde audio

Mono heeft één kanaal; stereo heeft er twee. De grootte van de gegevens is

bits=bemonsteringsfrequentie×bitdiepte×kanalen×seconden

Voor een stereo-opname van drie minuten met 44.100 Hz en 16 bits is de snelheid 44.100×16×2=1.411.200 bit/s. Vermenigvuldig met 180 seconden voor 254.016.000 bits en deel dan door 8: 31.752.000 bytes, ongeveer 31,8 MB.

Een mono-opname van tien seconden met 8.000 Hz en 8 bits geeft 8.000×8×1×10=640.000 bits, oftewel 80.000 bytes. Een stereo-opname met dezelfde instellingen zou twee keer zoveel gebruiken.

Kies wat je opslaat

Hogere frequenties en bitdieptes vereisen meer ruimte. Cd-instellingen zijn meestal genoeg om te luisteren; studio’s gebruiken vaak 24 bits en 48 kHz of hoger om ruimte te houden voor verwerking en bewerking.

MIDI legt instructies voor noten vast: welke noten, wanneer ze beginnen, hun sterkte en de instrumentkeuzes. Het kan veel kleiner zijn dan een bemonsterde uitvoering, maar het afspelen hangt af van de beschikbare instrumentklanken. MIDI kan de melodie van een zanger als noten beschrijven; het kan niet de daadwerkelijk opgenomen stem bevatten.

Belangrijkste punten

  • De bemonsteringsfrequentie telt metingen per seconde; de bitdiepte telt bits per meting.
  • Kwantisatie rondt een sample af op een van de beschikbare niveaus.
  • De bemonsteringsfrequentie moet hoger zijn dan twee keer de hoogste frequentie die je vastlegt.
  • Anti-aliasingfilters verwijderen hoge frequenties vóór de bemonstering.
  • Het aantal audiobits is bemonsteringsfrequentie × bitdiepte × kanalen × seconden.
  • MIDI slaat uitvoeringsinstructies op, geen opgenomen golfvorm.
6

Comprimeer gegevens en kies een formaat

Compressie vermindert het aantal bits dat nodig is om gegevens op te slaan of te versturen. Sommige methoden vervangen herhaalde informatie door kortere beschrijvingen die exact kunnen worden teruggedraaid. Andere verwijderen details uit beeld en geluid om kleinere bestanden te krijgen. Je volgt eenvoudige codes, houdt rekening met de informatie die een decoder nodig heeft en kiest een formaat op basis van wat behouden moet blijven. Een bestand dat bedoeld is voor bewerking of exact herstel stelt andere eisen dan een definitieve stroom om te beluisteren of te bekijken.

6.1 Verliesloze coderingen en hun grenzen

Bij verliesloze compressie worden de oorspronkelijke bits bij het decomprimeren exact hersteld. Tekst, programmabestanden, spreadsheets en andere exacte gegevens hebben die eigenschap nodig. ZIP, PNG, GIF en FLAC zijn bekende verliesloze formaten. Ze benutten redundantie: herhaalde of voorspelbare informatie die korter kan worden beschreven.

Beschrijf herhaalde reeksen

Run-length encoding, of RLE, vervangt opeenvolgende identieke symbolen door een aantal en het symbool. De tekenreeks “AAAAAABBBCCCCCCCCD” van 18 tekens wordt “6A3B8C1D”, acht tekens volgens deze afspraak van aantal en symbool. Bij het decoderen wordt elk paar uitgeschreven: zes A’s, drie B’s, acht C’s en één D.

Hetzelfde idee is geschikt voor egale kleurvlakken in afbeeldingen. De pixelrij 0000000011110000 kun je beschrijven als acht nullen, vier enen en vier nullen. Een echt bestand moet vastleggen hoe aantallen en symbolen worden opgeslagen, zodat decoderen eenduidig is.

Door korte reeksen kan RLE de gegevens groter maken. “ABCD” wordt “1A1B1C1D”, een verdubbeling van het aantal tekens nog vóór een eventuele header. Compressie werkt alleen als de besparing groter is dan de kosten van het beschrijven van het patroon.

Verwijs naar een herhaalde reeks

Een woordenboekmethode vervangt een herhaalde reeks door een verwijzing. Methoden uit de LZ-familie liggen ten grondslag aan formaten zoals ZIP en PNG. In “hallo en dan hallo” kan het tweede “hallo” worden vervangen door een instructie om 13 tekens terug te gaan en er vijf te kopiëren. Spaties tellen als tekens. De decoder beschikt al over die eerdere tekst en kan de reeks uit de verwijzing reproduceren.

Geef veelvoorkomende symbolen kortere codes

Een code met variabele lengte gebruikt verschillende aantallen bits voor verschillende symbolen. Huffmancodering bouwt codes op basis van de frequentie van symbolen. In “ABRACADABRA” komt A vijf keer voor, B en R elk twee keer en C en D elk één keer. Een code met vaste breedte voor vijf symbolen heeft drie bits per symbool nodig, oftewel 33 bits voor elf letters.

Een geschikte prefixvrije code is A = 0, B = 10, R = 110, C = 1110 en D = 1111. De gecodeerde gegevens gebruiken 5×1+2×2+2×3+1×4+1×4=23 bits. De codetabel voegt overhead toe, dus 23 bits alleen is niet de volledige bestandsgrootte.

Prefixvrij betekent dat geen code van een symbool het begin is van de code van een ander symbool. Als je 0110 leest, krijg je daarom A gevolgd door R zonder dat scheidingstekens nodig zijn. Door deze eigenschap kan een huffmandecoder een symbool herkennen zodra de code eindigt.

De decoder moet zowel de coderingsafspraak als de gegevens kennen. Voor een stroom met huffmancodering heeft de decoder de koppeling tussen symbolen en codes nodig; voor RLE moet die een aantal van een symbool kunnen onderscheiden. Een klein bericht kan bits aan gegevens besparen maar in totaal groter worden als deze beschrijving wordt meegerekend. Vergelijk de volledige oorspronkelijke en gecodeerde grootte om te bepalen of een methode het bestand daadwerkelijk heeft verkleind.

Meet de besparing en herken grenzen

De compressieverhouding is de oorspronkelijke grootte gedeeld door de gecomprimeerde grootte. Van 6 MB naar 2 MB gaan geeft 3:1. Gebruik aan beide kanten dezelfde eenheid.

Geen enkele verliesloze methode kan elk mogelijk bestand korter maken. Er zijn 2n verschillende invoeren van n bits, maar slechts 2n−1 bitreeksen die korter zijn dan n bits. Voor exact herstel moeten verschillende originelen onderscheidbaar blijven, dus kunnen ze niet allemaal een kortere uitvoer krijgen. Willekeurige gegevens en al gecomprimeerde bestanden worden vaak weinig kleiner of groeien door toegevoegde overhead.

Belangrijkste punten

  • Verliesloos decomprimeren reproduceert de oorspronkelijke bits exact.
  • RLE beschrijft identieke opeenvolgende symbolen met aantallen.
  • Woordenboekmethoden vervangen herhaalde reeksen door verwijzingen.
  • Huffmancodering kent kortere codes toe op basis van symboolfrequenties.
  • Een prefixvrije code maakt de grenzen tussen symbolen herkenbaar zonder scheidingstekens.
  • De compressieverhouding vergelijkt de oorspronkelijke grootte met de gecomprimeerde grootte.
  • Geen enkele verliesloze methode maakt elke mogelijke invoer korter.

6.2 Formaten met verlies en kwaliteitskeuzes

Compressie met verlies verwijdert informatie om de bestandsgrootte te verkleinen. Bij het decomprimeren ontstaat een versie die dicht bij het origineel ligt, maar waarin bepaalde details blijvend ontbreken. Foto’s, muziek, spraak en video kunnen geselecteerde verliezen verdragen die exacte tekst of programmagegevens niet kunnen verdragen.

Comprimeer afbeeldingen op basis van visueel belang

JPEG maakt gebruik van de verschillende gevoeligheid van het menselijk oog voor helderheid, kleur en fijne details. Een gebruikelijke JPEG verlaagt de resolutie van fijne kleurdetails en rondt fijne beelddetails af die in blokken van 8 × 8 worden weergegeven. De kwaliteitsinstelling bepaalt hoe sterk informatie wordt weggelaten. Sterkere compressie kan blokvorming of vervaging en randecho’s bij scherpe randen veroorzaken.

Een foto kan vaak ongeveer 10:1 bereiken met weinig zichtbaar verlies. Bij die verhouding zou een afbeelding met 6.220.800 bytes aan ruwe pixelgegevens gecomprimeerd ongeveer 622.080 bytes gebruiken, circa 0,6 MB. De verhouding is een voorbeeld, geen vaste eigenschap van elke JPEG.

Comprimeer geluid op basis van wat hoorbaar is

MP3 en AAC gebruiken perceptuele codering. Een zacht geluid kan worden gemaskeerd door een harder geluid met een nabije frequentie, zodat de encoder minder bits kan besteden aan informatie die een luisteraar waarschijnlijk niet hoort. Een kleiner bestand kan nog steeds vrijwel hetzelfde klinken als het origineel.

Bij een constante bitsnelheid is de grootte in bits gelijk aan bitsnelheid maal duur. Bij 128 kbit/s heeft een opname van drie minuten 128.000×180=23.040.000 bits nodig, oftewel 2.880.000 bytes, ongeveer 2,9 MB. Dat is ongeveer een elfde van de 1.411,2 kbit/s van ongecomprimeerde cd-audio. De gecomprimeerde snelheid beschrijft de gecodeerde stroom al; vermenigvuldig die niet opnieuw met de oorspronkelijke bitdiepte per sample.

Benut overeenkomsten tussen videobeelden

Opeenvolgende beelden tonen vaak bijna dezelfde scène. Videoformaten zoals H.264 en AV1 comprimeren beelddetails en beschrijven veel beelden met veranderingen of voorspellingen op basis van andere beelden. Zo wordt herhaalde informatie zowel in de tijd als binnen elk beeld verwijderd.

Stem het formaat af op het gebruik
GebruikGeschikte keuzeReden
Exacte tekst, code of gegevensVerliesloos archiefElke bit moet behouden blijven
Foto om te delenJPEG of een ander afbeeldingsformaat met verliesKleine omvang met aanvaardbaar visueel verlies
Schermafbeelding of logoPNGBehoudt scherpe randen en egale kleuren
Muziek voor streamingAAC, MP3 of OpusBespaart overdrachtscapaciteit
Audiomaster voor archiveringFLACExact herstel van de audiosamples

Bewaar een verliesloos origineel voor toekomstige bewerking. Herhaald decoderen en opnieuw coderen met verlies kan generatieverlies toevoegen. Als je een JPEG met verlies naar PNG omzet, blijven de huidige gedecodeerde pixels behouden, maar kunnen eerder verwijderde details niet worden hersteld.

Meer compressie kan kwaliteit, verwerkingstijd of beide kosten. De bruikbare keuze hangt af van de inhoud en het gebruik van een bestand; het kleinste bestand is niet altijd het bruikbaarst.

Belangrijkste punten

  • Compressie met verlies verwijdert geselecteerde informatie blijvend.
  • JPEG benut de gevoeligheid van het oog; audio met verlies gebruikt perceptuele codering.
  • De grootte van een gecomprimeerde stroom volgt uit bitsnelheid × duur.
  • Bewaar een verliesloos origineel als toekomstige bewerking of exact herstel belangrijk is.
  • Als je een bestand met verlies omzet naar een verliesloos formaat, kun je verwijderde informatie niet terughalen.

Binaire getallen en gegevensrepresentatie: voorbeelden

6 Walkthroughs

1

Maak een code en lees de bits

12 stappen
Tel de patronen die een veld nodig heeft, reken de waarden om en verbind binaire groepen met hexadecimale notatie.
  1. 1
    IntroductieEén patroon, meerdere interpretaties

    Een opgeslagen patroon heeft twee afzonderlijke kenmerken: hoeveel bits het inneemt en hoe een lezer die interpreteert. De acht bits 01000001 kunnen een getal, een tekstteken of een kleurintensiteit betekenen.

    We kiezen eerst genoeg bits om een verzameling waarden te onderscheiden en lezen daarna een numeriek patroon met binaire plaatswaarden en hexadecimale notatie. Een andere notatie verandert wat je opschrijft, terwijl de waarde behouden blijft.

  2. 2
    UitlegTel mogelijkheden door te verdubbelen

    Elke bit heeft twee mogelijkheden, dus verdubbelt elke toegevoegde bit het aantal patronen. Twee bits geven 00, 01, 10 en 11; drie bits geven acht patronen. In het algemeen geven n bits 2n patronen.

    Om 26 letters te onderscheiden zijn vier bits niet genoeg, omdat ze maar 16 patronen geven. Vijf bits geven er 32 en laten zes patronen ongebruikt. Een code hoeft niet elk beschikbaar patroon te gebruiken.

  3. 3
    UitdagingKies een veld voor categorieën

    Een apparaat moet 90 categorieën onderscheiden. Wat is het kleinste aantal bits waarmee je die kunt coderen? Hoeveel patronen blijven ongebruikt?

    ---reveal---

    Zes bits geven 64 patronen, te weinig. Zeven geven er 128, dus heeft het veld zeven bits nodig en blijven 38 patronen ongebruikt. Het grootste numerieke label kan 89 zijn als de labels bij nul beginnen; die grenswaarde is iets anders dan het aantal van 90 categorieën.

  4. 4
    VerbandLet op hoofd- en kleine letters bij eenheden

    Een byte heeft acht bits. Daarom maakt het uit of de letter van de eenheid een hoofdletter of een kleine letter is: b betekent bit en B betekent byte. Een verbinding van 40 Mbit/s heeft een ideaal maximum van 5 MB/s voor de gegevens, vóór overhead.

    Ook de voorvoegsels van eenheden zijn van belang. Eén MB betekent één miljoen bytes, terwijl één MiB 1.048.576 bytes betekent. Als je een opgeslagen hoeveelheid van MB naar MiB omrekent, verandert de numerieke waarde zonder dat er gegevens verdwijnen.

  5. 5
    UitlegZet binaire plaatswaarden op een rij

    De meest rechtse plaatswaarde voor gehele getallen is 1. Naar links volgen 2, 4, 8, 16, 32, 64, enzovoort. Een 1 selecteert een plaatswaarde en een 0 laat die weg.

    Voor 101101 zijn de geselecteerde plaatswaarden 32, 8, 4 en 1, samen 45. Voorloopnullen kunnen een bitbreedte vullen zonder deze plaatswaarden te veranderen. Een ontbrekende nul binnen het patroon zou sommige cijfers verschuiven en de waarde veranderen.

  6. 6
    VoorbeeldKies de machten voor 156

    De grootste macht van twee die niet groter is dan 156, is 128. Trek die af; er blijft 28 over. De plaatswaarden 64 en 32 passen niet, dus krijgen ze nullen.

    Trek 16 af van 28; er blijft 12 over. Trek 8 af, zodat 4 overblijft, en trek dan 4 af om op nul uit te komen. De laatste twee posities, 2 en 1, krijgen nullen. Over de posities van 128 tot en met 1 zijn de bits 10011100. Door elke ongebruikte positie te behouden, voorkom je dat de gekozen machten verschuiven.

  7. 7
    TipKeer de resten bij gehele deling om

    Herhaald delen is een andere weg naar hetzelfde patroon. Als je een geheel getal door twee deelt, krijg je de laatste bit als rest. Door het quotiënt te delen vind je de volgende bit links daarvan.

    Voor 156 krijg je de resten 0, 0, 1, 1, 1, 0, 0, 1. Lees van de laatste naar de eerste om 10011100 te krijgen. Die omgekeerde volgorde is nodig omdat je bij het delen eerst de minst significante positie vindt.

  8. 8
    UitdagingReken een nieuwe waarde om en controleer die

    Schrijf het decimale getal 109 in acht binaire posities en leg daarna met je resultaat uit of 109 oneven is.

    ---reveal---

    De gekozen machten zijn 64, 32, 8, 4 en 1, dus is het patroon 01101101. Hun som is 109, wat de omrekening bevestigt. De laatste bit is 1; alle andere posities dragen even hoeveelheden bij, zodat een oneven geheel getal overblijft. De voorloopnul vult de byte zonder de waarde te veranderen.

  9. 9
    UitlegVervang nibbles door hexadecimale cijfers

    Hexadecimale notatie heeft zestien cijfers: 0–9 gevolgd door A–F voor tien tot en met vijftien. Vier bits onderscheiden ook zestien patronen, dus duidt elk hexadecimaal cijfer één nibble aan.

    Splits 10011100 in 1001 en 1100. De eerste groep is negen en de tweede is twaalf, geschreven als C. Het resultaat is 0x9C. Hexadecimale notatie gebruikt vier keer zo weinig cijfers als binaire notatie, terwijl de directe koppeling met groepen binnen de byte behouden blijft.

  10. 10
    VoorbeeldGroepeer een kort patroon vanaf rechts

    Om 101101 om te rekenen, maak je groepen vanaf rechts: 10 en 1101. Vul de meest linkse groep aan tot 0010. De groepen geven nu hexadecimaal 2 en D, dus is de waarde 0x2D.

    Controleer met hexadecimale plaatswaarden: twee keer zestien plus dertien keer één is 45. Als je vanaf links groepeert, komt de laatste korte groep op de verkeerde plaats. Binnen een volledige hexadecimale omzetting moet elk cijfer alle vier de bits behouden.

  11. 11
    UitdagingVerbind bits, bitbreedte en hexadecimale notatie

    Een veld zonder teken met vaste bitbreedte bevat 0xB4. Hoeveel bits geven de twee hexadecimale cijfers weer, wat is het binaire patroon en welke decimale waarde bevat het veld?

    ---reveal---

    Twee hexadecimale cijfers geven acht bits weer. B wordt 1011 en 4 wordt 0100, dus is de byte 10110100. De geselecteerde plaatswaarden zijn samen 128 + 32 + 16 + 4 = 180. Ook elf keer zestien plus vier geeft 180.

  12. 12
    SamenvattingDrie controles voor een opgeslagen waarde

    Controleer capaciteit, notatie en eenheden afzonderlijk. Een veld heeft genoeg patronen nodig voor alle mogelijke waarden. Binaire notatie selecteert machten van twee; hexadecimale notatie groepeert die bits vanaf rechts per vier.

    De opgeslagen waarde blijft behouden als je het grondtal van de schrijfwijze of de opslageenheid verandert. Een andere interpretatie van de gegevens kan dezelfde bits een andere betekenis geven, dus horen het patroon en de leesregel bij elkaar.

2

Lees waarden met teken en behoud hun bitbreedte

11 stappen
Werk met grenzen zonder teken, codering in tweecomplement en het verbreden van een negatieve waarde.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieEen bitbreedte heeft een interpretatie nodig
  2. 2
    UitlegReserveer een patroon voor nul
  3. 3
    VoorbeeldVolg cyclische overloop zonder teken
  4. 4
    UitdagingKies genoeg ruimte voor een telling
  5. 5
    UitlegGeef de voorste bit een negatief gewicht
  6. 6
    VoorbeeldBegin het patroon voor −45
  7. 7
    VoorbeeldVoltooi de tekenomkering
  8. 8
    UitdagingCodeer een ander negatief geheel getal
  9. 9
    KernpuntBreid de tekenbit uit, niet alleen de nullen
  10. 10
    UitdagingMaak breder voordat je het teken omkeert
  11. 11
    SamenvattingBewaar de regel bij het patroon
3

Bouw een drijvendekommacodering op

17 stappen
Reken een binaire breuk om, stel IEEE 754-velden samen en redeneer over afronding en afstanden.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieEen waarde en een schaal
  2. 2
    UitlegLees de breukposities
  3. 3
    VoorbeeldMaak een eindige breuk
  4. 4
    KernpuntVoorspel of de cijfers eindigen
  5. 5
    UitdagingBepaal de schaal in vastekommarepresentatie
  6. 6
    UitlegHerken de velden
  7. 7
    VoorbeeldSchrijf 6,25 binair
  8. 8
    VoorbeeldCodeer de exponent
  9. 9
    VoorbeeldSla alleen de fractie op
  10. 10
    VoorbeeldVoeg de drie velden samen
  11. 11
    UitdagingDecodeer een andere normale waarde
  12. 12
    TipDeel eerst gereserveerde patronen in
  13. 13
    UitlegMaak onderscheid tussen bereik en afstand
  14. 14
    KernpuntZie de afstand groeien
  15. 15
    UitdagingRond een geheel getal halverwege af
  16. 16
    UitdagingKies een type voor een exact bedrag
  17. 17
    SamenvattingLees het formaat vóór de waarde
4

Volg tekst van tekens naar bytes

12 stappen
Maak onderscheid tussen ASCII-codes, Unicode-codepunten en gecodeerde bytes en onderzoek daarna een verkeerde decodering.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieTekst heeft een afspraak nodig
  2. 2
    UitlegZoek de ASCII-tekencode
  3. 3
    VoorbeeldCodeer letters en leestekens
  4. 4
    UitdagingBepaal de numerieke waarde van een cijfer
  5. 5
    VerbandWaarom één byte niet genoeg was
  6. 6
    UitlegIdentificeer vóór het coderen
  7. 7
    VoorbeeldSplits de bits voor é
  8. 8
    VoorbeeldVoltooi de twee gecodeerde bytes
  9. 9
    UitdagingTel een tekenreeks met verschillende schriftsystemen
  10. 10
    KernpuntEén uiterlijk kan twee vormen hebben
  11. 11
    UitdagingOnderzoek het verminkte woord
  12. 12
    SamenvattingHoud drie tellingen apart
5

Bereken de benodigde opslagruimte voor afbeeldingen en opnamen

15 stappen
Gebruik aantallen pixels en samples, maak onderscheid tussen bitdiepte en resolutie en vergelijk ruwe opslag met formaten op basis van instructies.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieTel waarden en daarna bits per waarde
  2. 2
    UitlegBouw een RGB-pixel op
  3. 3
    VerbandVoeg transparantie toe of gebruik een kleurenpalet
  4. 4
    UitdagingLees een kleur en de kleurdiepte
  5. 5
    VoorbeeldBegin met het pixelraster
  6. 6
    VoorbeeldReken de afbeelding om naar bytes
  7. 7
    UitdagingSchaal het raster en voeg videobeelden toe
  8. 8
    KernpuntEen tekening kan instructies opslaan
  9. 9
    UitlegBemonster timing en amplitude afzonderlijk
  10. 10
    UitlegFilter vóór het bemonsteren
  11. 11
    VoorbeeldBepaal eerst de audiosnelheid
  12. 12
    UitdagingBereken een andere opname
  13. 13
    VerbandNoten kunnen een golfvorm vervangen
  14. 14
    UitdagingVergelijk twee veranderingen in opslag
  15. 15
    SamenvattingHoud de factoren en eenheden zichtbaar
6

Comprimeer zonder grootte en getrouwheid te verwarren

12 stappen
Pas run-length encoding en codes met variabele lengte toe, houd rekening met overhead en bepaal wanneer informatie mag worden weggelaten.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieTwee manieren om een kleiner bestand te krijgen
  2. 2
    UitlegVervang herhaalde reeksen door aantallen
  3. 3
    UitdagingProbeer lange en korte herhaalde reeksen
  4. 4
    VerbandVerwijs naar een eerder gevonden reeks
  5. 5
    VoorbeeldGeef veelvoorkomende symbolen korte codes
  6. 6
    UitdagingDecodeer de stroom op volgorde
  7. 7
    KernpuntSommige invoeren moeten groot blijven
  8. 8
    UitlegVerwijder minder opvallende mediadetails
  9. 9
    VoorbeeldGebruik een gecomprimeerde bitsnelheid direct
  10. 10
    UitdagingBescherm een masterbestand terwijl je een kopie deelt
  11. 11
    UitdagingVergelijk een verhouding met een overdrachtsbudget
  12. 12
    SamenvattingStem de garantie af op het doel

Binaire getallen en gegevensrepresentatie: oefenvragen

50 Oefenvragen in 5 sets

Set 1: Lees patronen en schat de benodigde opslagruimte10 Oefenvragen

Vraag 1 van 10

Een statusveld moet 70 verschillende toestanden onderscheiden. Wat is het kleinste aantal bits dat het nodig heeft?
  1. 6 bits
  2. 8 bits
  3. 7 bits
  4. 70 bits
Toon antwoordVerberg antwoord
Antwoord: C
Zes bits geven 64 patronen, die niet genoeg zijn voor 70 toestanden. Zeven bits geven 128 patronen, dus is zeven de kleinste bitbreedte die werkt. Als je zes kiest omdat 64 dichtbij ligt, blijven sommige toestanden zonder eigen patroon.

Vraag 2 van 10

Welke decimale waarde geeft het binaire getal 1010110 weer?
  1. 86
  2. 84
  3. 106
  4. 43
Toon antwoordVerberg antwoord
Antwoord: A
De 1-bits staan op de posities voor 64, 16, 4 en 2, samen 86. De nul op de eenhedenpositie draagt niets bij. Als je 101011 als 43 leest, laat je de laatste nul weg. Daardoor verwijder je een positie en halveer je de waarde in plaats van die te behouden.

Vraag 3 van 10

Hoe schrijf je het binaire gehele getal 1110101 in hexadecimale notatie?
  1. 0xE5
  2. 0x7A
  3. 0xD1
  4. 0x75
Toon antwoordVerberg antwoord
Antwoord: D
Groepeer vanaf rechts voor 0111 0101. Die nibbles zijn 7 en 5, wat 0x75 geeft. Als je vanaf links groepeert als 1110 101 en de tweede groep aanvult, verander je de plaatswaarden en krijg je onjuist 0xE5.

Vraag 4 van 10

Wat is het grootste gehele getal zonder teken dat in 12 bits past?
  1. 4.096
  2. 4.095
  3. 2.047
  4. 4.097
Toon antwoordVerberg antwoord
Antwoord: B
Twaalf bits bieden 4.096 patronen en het eerste patroon geeft nul weer. De grootste waarde zonder teken is daarom 4.095. Als je 4.096 als maximum gebruikt, verwar je het aantal beschikbare patronen met de laatste waarde in een telling die bij nul begint.

Vraag 5 van 10

Welke waarde geeft 11101010 weer als geheel getal in tweecomplement met 8 bits?
  1. −106
  2. −22
  3. 234
  4. −21
Toon antwoordVerberg antwoord
Antwoord: B
De hoogste bit met teken draagt −128 bij en de andere 1-bits dragen 64 + 32 + 8 + 2 = 106 bij, wat −22 geeft. Als je 106 als grootte leest en er een minteken voor zet, krijg je −106, maar dat is een interpretatie als teken-grootterepresentatie, geen tweecomplement.

Vraag 6 van 10

Welke decimale waarde wordt weergegeven door de binaire breuk 10,011?
  1. 2,75
  2. 2,3
  3. 2,625
  4. 2,375
Toon antwoordVerberg antwoord
Antwoord: D
Het gehele deel is 2 en het breukdeel selecteert een kwart plus een achtste. Hun som is 0,375, dus is de volledige waarde 2,375. Als je 2,75 gebruikt, behandel je de eerste 1 in het breukdeel als een half en verschuif je beide geselecteerde breukposities één plaats naar links.

Vraag 7 van 10

In ASCII heeft “0” code 48. Wat is de code voor het teken “8”?
  1. 56
  2. 8
  3. 55
  4. 64
Toon antwoordVerberg antwoord
Antwoord: A
ASCII-cijfertekens hebben opeenvolgende codes, te beginnen met 48 voor “0”. Acht posities verder geeft 56 voor “8”. De gehele waarde 8 heeft een andere representatie; om het teken op te slaan heb je de tekencode nodig, niet de waarde die de vorm aanduidt.

Vraag 8 van 10

Welke RGB-kanaalwaarden geeft de webkleur #4080C0 aan?
  1. (40, 80, 120)
  2. (192, 128, 64)
  3. (64, 128, 192)
  4. (4, 8, 12)
Toon antwoordVerberg antwoord
Antwoord: C
Splits de kleurcode in de hexadecimale paren 40, 80 en C0. Hun decimale waarden zijn 64, 128 en 192 in de volgorde rood, groen, blauw. Als je de paren als decimale getallen behandelt, verlies je de plaatswaarden van grondtal 16; als je de paren omdraait, verwissel je rood en blauw.

Vraag 9 van 10

Hoeveel bytes aan ongecomprimeerde samplegegevens zijn nodig voor 6 seconden monoaudio met 12.000 Hz en 16 bits?
  1. 72.000 bytes
  2. 288.000 bytes
  3. 1.152.000 bytes
  4. 144.000 bytes
Toon antwoordVerberg antwoord
Antwoord: D
Er zijn 12.000 × 6 = 72.000 samples in het enkele kanaal, die elk twee bytes gebruiken. Het totaal is 144.000 bytes. Als je 1.152.000 opgeeft, geef je het aantal bits op als bytes; stereo zou de grootte verdubbelen, maar deze opname is mono.

Vraag 10 van 10

Een verliesloze code gebruikt A = 0, B = 10, C = 110 en D = 111. Een bericht bevat 40 A’s, 5 B’s, 2 C’s en 1 D. Een verplichte tabel voegt 16 bits toe. Hoeveel bits worden bespaard ten opzichte van een vaste code van 2 bits zonder tabel?
  1. 21 bits
  2. 37 bits
  3. 16 bits
  4. 5 bits
Toon antwoordVerberg antwoord
Antwoord: A
De gegevens met variabele codelengte gebruiken 40 + 10 + 6 + 3 = 59 bits en de tabel brengt het totaal op 75. De vaste code gebruikt 48 × 2 = 96 bits, dus is de besparing 21 bits. Als je beweert dat 37 bits worden bespaard, negeer je de verplichte tabel van 16 bits.
Set 2: Pas formaten toe en bereken gegevensgroottes10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een verbinding draagt gegevens over met 48 Mbit/s. Hoeveel decimale megabytes kan de verbinding zonder overhead in 5 seconden overdragen?
  1. 6 MB
  2. 30 MB
  3. 240 MB
  4. 3 MB
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Hoe schrijf je 74 als binaire waarde zonder teken van 8 bits?
  1. 01010010
  2. 10010100
  3. 01001001
  4. 01001010
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Hoe wordt −19 weergegeven in tweecomplement met 8 bits?
  1. 11101101
  2. 11101100
  3. 10010011
  4. 00010011
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een normale binary32-waarde heeft teken 0, opgeslagen exponent 125 en fractiebits 100 gevolgd door nullen. Wat is de decimale waarde?
  1. 1,5
  2. 0,25
  3. 0,375
  4. 0,1875
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een positieve waarde is eindig in binary64, maar veroorzaakt bij de standaardafronding overloop in binary32. Welk aspect van binary32 is overschreden?
  1. Het aantal gehele getallen
  2. Het aantal decimalen
  3. Het eindige bereik
  4. Het tekstformaat
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Hoeveel UTF-8-bytes neemt “AЖ中😀” in als Ж gelijk is aan U+0416, 中 aan U+4E2D en 😀 aan U+1F600?
  1. 10 bytes
  2. 4 bytes
  3. 8 bytes
  4. 12 bytes
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een rasterafbeelding gebruikt een kleurenpalet van precies 32 kleuren. Wat is het kleinste vaste aantal bits dat nodig is voor elke pixelindex?
  1. 4 bits
  2. 6 bits
  3. 32 bits
  4. 5 bits
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een ongecomprimeerde RGB-afbeelding van 300 × 200 gebruikt 24 bits per pixel. Beide afmetingen worden verdubbeld en een alfakanaal van 8 bits wordt toegevoegd. Wat is de nieuwe grootte van de pixelgegevens?
  1. 720.000 bytes
  2. 960.000 bytes
  3. 480.000 bytes
  4. 240.000 bytes
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een mono-opname duurt 4 seconden bij 30.000 Hz met samples van 12 bits. Na laagdoorlaatfiltering is de hoogste frequentie 14 kHz. Welke ruwe gegevensgrootte en welke conclusie over de bemonsteringsfrequentie volgen hieruit?
  1. 180.000 bytes; frequentie is onvoldoende
  2. 180.000 bytes; frequentie is voldoende
  3. 360.000 bytes; frequentie is voldoende
  4. 120.000 bytes; frequentie is onvoldoende
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een audiostroom met constante snelheid gebruikt 96 kbit/s gedurende 50 seconden. Wat is de grootte in decimale bytes, zonder headers?
  1. 600.000 bytes
  2. 4.800.000 bytes
  3. 6.000.000 bytes
  4. 300.000 bytes
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 3: Interpreteer dezelfde bits op verschillende manieren10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Welke decimale waarde geeft 0x2B6 weer?
  1. 678
  2. 710
  3. 438
  4. 694
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een teller zonder teken van 8 bits gebruikt cyclische overloop. De teller begint bij 247 en wordt met 28 verhoogd. Welke waarde wordt opgeslagen?
  1. 19
  2. 20
  3. 255
  4. 275
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een veld in tweecomplement van 6 bits bevat 101101. Het wordt verbreed naar 8 bits zonder de waarde te veranderen. Wat zijn het verbrede patroon en de decimale waarde?
  1. 00101101; −19
  2. 11101101; −45
  3. 11101101; −19
  4. 10101101; −19
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Wat is de stap tussen opeenvolgende waarden als een vastekommaformaat zonder teken zes fractiebits heeft?
  1. 1/6
  2. 1/64
  3. 1/32
  4. 1/128
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Wat zijn het teken, de opgeslagen exponent en het begin van het fractieveld wanneer −13,5 als normale binary32-waarde wordt gecodeerd?
  1. 1; 130; 11011…
  2. 1; 130; 1011…
  3. 1; 124; 1011…
  4. 1; 131; 1011…
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

De tekst “0064” wordt opgeslagen als één ASCII-byte per teken. Hoeveel bytes neemt de tekst in?
  1. 4 bytes
  2. 1 byte
  3. 2 bytes
  4. 8 bytes
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

De bytes voor “é” in UTF-8 zijn C3 A9. Een lezer interpreteert die als twee Windows-1252-tekens. Wat is de directe oorzaak van de verminkte weergave?
  1. De schrijver gebruikte te weinig codepunten.
  2. De tekst overschreed één byte per bestand.
  3. De lezer gebruikte de verkeerde codering.
  4. De lezer veranderde het Unicode-getal.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

De breedte van een rasterafbeelding wordt verdrievoudigd en de hoogte verdubbeld, terwijl de kleurdiepte gelijk blijft. Met welke factor groeit de grootte van de ruwe pixelgegevens?
  1. 5
  2. 3
  3. 12
  4. 6
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een prefixvrije code is A = 0, B = 10, C = 110, D = 111. Welk bericht is gecodeerd als 1011001110?
  1. BCDAA
  2. BACDA
  3. BCADA
  4. CBADA
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een fotograaf zet een bestaande JPEG om naar PNG zonder de gedecodeerde pixels te veranderen. Wat gebeurt er met details die eerder door JPEG zijn weggelaten?
  1. Ze keren terug als de PNG opnieuw wordt geopend.
  2. Ze keren terug als de PNG groter is.
  3. Ze keren terug als nieuwe metadatavelden.
  4. Ze blijven ontbreken in de afbeelding.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 4: Onderzoek fouten en verbind representaties10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een bestand heeft 3.145.728 bytes. Wat is de grootte in MiB?
  1. 3 MiB
  2. 3,145728 MiB
  3. 3.072 MiB
  4. 24 MiB
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een cursist deelt 90 herhaaldelijk door 2 en schrijft de resten in de gevonden volgorde als 0101101. Wat is de correcte binaire waarde van 90?
  1. 0101101
  2. 1010110
  3. 1011010
  4. 1101010
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een programma voor bestandsweergave toont de drie bytes 0x07, 0xB2 en 0xF0. Hoeveel bits bevatten die bytes?
  1. 12 bits
  2. 6 bits
  3. 48 bits
  4. 24 bits
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een sensor registreert gehele aantallen van 0 tot en met 8.192. Elk aantal gebruikt de kleinst mogelijke bitbreedte zonder teken en de velden worden zonder opvulling aaneengesloten opgeslagen. Hoeveel bytes bevatten 40 aantallen?
  1. 65 bytes
  2. 70 bytes
  3. 80 bytes
  4. 560 bytes
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een binary32-patroon heeft teken 1, een exponent met alleen enen en een fractie ongelijk aan nul. Tot welke categorie behoort het en kun je er een eindig getal van maken door alleen de tekenbit te veranderen?
  1. Oneindigheid; na tekenomkering blijft het oneindig
  2. Subnormaal; na tekenomkering wordt het normaal
  3. Eindig; na tekenomkering blijft het eindig
  4. NaN; na tekenomkering blijft het NaN
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Twee opeenvolgende positieve normale binary32-waarden in het interval van 2²⁵ tot 2²⁶ verschillen 4. Wat doet de standaardafronding met het exacte gehele getal 33.554.435?
  1. Het slaat 33.554.432 op.
  2. Het slaat 33.554.435 exact op.
  3. Het slaat 33.554.436 op.
  4. Het loopt over naar positief oneindig.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een opslaglimiet staat 18 UTF-8-bytes toe. Een tekenreeks bevat alleen het teken “中” (U+4E2D), zonder dat andere gegevens worden meegeteld. Hoeveel exemplaren passen erin?
  1. 6
  2. 18
  3. 9
  4. 4
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een afbeelding van 20 × 10 gebruikt 16 paletvermeldingen, elk opgeslagen als RGB van 24 bits, en aaneengesloten pixelindices van 4 bits. Hoeveel bytes zijn nodig als je al het overige buiten beschouwing laat?
  1. 100 bytes
  2. 148 bytes
  3. 600 bytes
  4. 196 bytes
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een gefilterd signaal bevat frequenties tot en met 17 kHz. Wat is de kleinste gehele bemonsteringsfrequentie in kHz die aan de strikte bemonsteringsregel voldoet?
  1. 17 kHz
  2. 35 kHz
  3. 34 kHz
  4. 33 kHz
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een decoder moet elke mogelijke invoer van 10 bits exact herstellen. Er zijn 1.024 van zulke invoeren. Waarom kan een verliesloos schema die niet allemaal in minder dan 10 bits coderen?
  1. Er zijn slechts 1.023 bitreeksen korter dan 10 bits.
  2. Er zijn precies 1.024 bitreeksen korter dan 10 bits.
  3. Elke kortere bitreeks moet eindigen op een 1-bit.
  4. Elke invoer moet de oorspronkelijke bitposities behouden.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 5: Combineer grenzen, coderingen en keuzes over grootte10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een binair geheel getal wordt geschreven als 110011. Welke decimale waarde ontstaat als je rechts een nul toevoegt, bij een onbeperkte bitbreedte?
  1. 51
  2. 52
  3. 102
  4. 204
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Wat is de kleinste waarde van een geheel getal in tweecomplement met 10 bits?
  1. −511
  2. −512
  3. −1.024
  4. −1.023
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een vastekommaformaat zonder teken van 8 bits heeft vijf bits voor het gehele deel en drie fractiebits. Een waarde van 6,375 wordt exact opgeslagen. Welk geheel getal zonder teken geeft het ruwe patroon van 8 bits weer als je de vastekommaschaal negeert?
  1. 51
  2. 6
  3. 48
  4. 102
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een tweecomplementwaarde van 8 bits is 10000000. De waarde wordt met tekenuitbreiding naar 16 bits verbreed en daarna wordt in 16 bits het teken omgekeerd. Welk patroon ontstaat?
  1. 1111111110000000
  2. 0000000001111111
  3. 1000000000000000
  4. 0000000010000000
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

In binary32 zijn opeenvolgende weergeefbare waarden rond 2²⁴ gelijk aan 16.777.216 en 16.777.218. Welk resultaat wordt opgeslagen als je het exacte gehele getal 16.777.217 omzet met afronding naar de dichtstbijzijnde waarde, naar even bij gelijke afstand?
  1. 16.777.216
  2. 16.777.217
  3. 16.777.218
  4. 16.777.220
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een tekstveld bevat “09” als ASCII-bytes 0x30 0x39. Welke numerieke waarde ontstaat als je deze tekens als een decimaal geheel getal interpreteert?
  1. 57
  2. 9
  3. 3.039
  4. 48
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een recorder bewaart stereosamples van 16 bits bij 24 kHz. De recorder moet een gefilterd signaal vastleggen met een hoogste frequentie van 10 kHz en binnen 6.000.000 bytes aan ruwe samplegegevens blijven. Wat is de langst mogelijke duur in hele seconden?
  1. 63 seconden
  2. 125 seconden
  3. 31 seconden
  4. 62 seconden
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een ongecomprimeerde video zonder geluid heeft 160 × 120 pixels, 24 bits per pixel en 25 beelden/s. Hoeveel volledige seconden passen zonder headers in 7,2 MB decimale opslag?
  1. 4 seconden
  2. 10 seconden
  3. 5 seconden
  4. 40 seconden
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een opname behoudt de bemonsteringsfrequentie en duur, maar verandert van stereo met 16 bits naar mono met 24 bits. Welk deel van de oorspronkelijke ruwe grootte van de samplegegevens blijft over?
  1. 3/4
  2. 3/2
  3. 1/2
  4. 4/3
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een project vereist exact herstel van een bewerkt audiomasterbestand en een kopie om te delen van 90 seconden met maximaal 1,8 MB aan gecodeerde gegevens. Welke combinatie voldoet aan beide eisen?
  1. MP3-masterbestand; kopie met constante 160 kbit/s
  2. FLAC-masterbestand; kopie met constante 192 kbit/s
  3. FLAC-masterbestand; kopie met constante 160 kbit/s
  4. AAC-masterbestand; kopie met constante 128 kbit/s
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Kom je niet uit je eigen opgave? Huiswerkhulp

Kernbegrippen

81 Kernbegrippen, elk met een definitie

A

afbeeldingsmetadata
Afbeeldingsmetadata beschrijven een afbeelding of de opslag ervan, waaronder afmetingen en diepte, en kunnen ook cameragegevens, datum of locatie bevatten.
Een fotobestand kan camera-informatie bevatten, ook al maken die bytes geen deel uit van het zichtbare pixelraster.
afronden naar even bij gelijke afstand
Afronden naar even bij gelijke afstand lost een afrondingsgeval precies halverwege op door de weergeefbare waarde met een even laatst behouden mantissebit te kiezen.
Een geheel getal precies halverwege twee waarden rond 2²⁴ kan bij enkele precisie naar beneden worden afgerond, terwijl een andere waarde halverwege naar boven wordt afgerond.
afrondingsfout
Een afrondingsfout is het verschil tussen een bedoelde exacte waarde en de weergeefbare waarde die wordt gekozen om die op te slaan of ermee te rekenen.
De repeterende binaire ontwikkeling van 0,1 wordt afgerond wanneer die met eindige enkele of dubbele precisie wordt opgeslagen.
alfakanaal
Een alfakanaal slaat de ondoorzichtigheid van een pixel afzonderlijk van de kleur op, meestal met 0 voor transparant en 255 voor ondoorzichtig.
Een RGBA-pixel gebruikt vier waarden van acht bits, dus is de ruwe opslag vier bytes in plaats van de drie van RGB.
aliasing
Aliasing ontstaat wanneer bemonsterde frequenties boven de helft van de bemonsteringsfrequentie als onjuiste lagere frequenties in de digitale opname verschijnen.
Een anti-aliasingfilter verwijdert hoge ingangsfrequenties vóór de bemonstering, zodat ze geen onjuiste tonen veroorzaken.
analoog signaal
Een analoog signaal verandert continu, zoals een microfoonspanning die veranderingen in de luchtdruk door geluid volgt.
Een audio-omzetter meet het analoge signaal van een microfoon voordat hij digitale samples ervan opslaat.
ASCII
ASCII is een 7-bits tekencode met 128 vermeldingen voor Engelse letters, cijfers, leestekens, de spatie en besturingstekens.
Het uitroepteken heeft ASCII-code 33 en wordt meestal opgeslagen als de byte 00100001.
audiobitdiepte
De audiobitdiepte is het aantal bits per sample en bepaalt het aantal beschikbare amplitudeniveaus en hoe fijn die zijn.
Zestien bits maken 65.536 sampleniveaus mogelijk, terwijl acht bits er maar 256 en een grovere kwantisatie mogelijk maken.

B

bemonsteringsfrequentie
De bemonsteringsfrequentie is het aantal metingen per seconde in elk audiokanaal, gemeten in hertz, en bepaalt de tijd tussen die metingen.
Bij 48 kHz doet de recorder elke seconde 48.000 metingen voor elk kanaal in de opname.
bemonsteringstheorema
Het bemonsteringstheorema vereist voor getrouwe bemonstering van een bandbegrensd signaal een frequentie die hoger is dan twee keer de hoogste behouden signaalfrequentie.
Een signaal dat frequenties tot en met 18 kHz behoudt, heeft een bemonsteringsfrequentie boven 36 kHz nodig, met filtering om hogere frequenties te verwijderen.
bereik
Het bereik van een numeriek formaat beschrijft de groottes die het kan weergeven; bij drijvendekommarepresentatie bepalen exponentbits de globale schaalgrenzen.
Een waarde kan binnen het eindige bereik van binary32 liggen en toch tussen twee opeenvolgende weergeefbare waarden vallen.
besturingsteken
Een besturingsteken, zoals een tab of regeldoorvoer, is een tekstcode die de verwerking van tekst aanstuurt zonder een gewoon zichtbaar symbool af te drukken.
ASCII-code 10 is een regeldoorvoer, zodat een bestand die kan gebruiken om tussen de tekstbytes een regeleinde te markeren.
binair IEC-voorvoegsel
Een binair IEC-voorvoegsel schaalt een gegevenseenheid met een macht van 1.024, met namen zoals kibi, mebi en gibi.
Eén MiB bevat 1.048.576 bytes, dus neemt een bestand van één miljoen bytes iets minder dan één MiB in.
binair talstelsel
Het binaire talstelsel is het talstelsel met grondtal 2, dat de cijfers 0 en 1 gebruikt met plaatswaarden die machten van twee zijn.
Het binaire gehele getal 10010 selecteert de posities voor zestien en twee, dus is de decimale waarde achttien.
binaire komma
De binaire komma scheidt machten van twee voor gehele getallen van machten voor breuken, die direct rechts van de komma beginnen met een half.
De eerste 1 na de komma in 0,101₂ draagt een half bij en de laatste 1 een achtste.
bit
Een bit is een binair cijfer met een van twee waarden, 0 of 1, weergegeven door twee fysische toestanden die hardware kan onderscheiden.
Een statusvlag kan een keuze tussen aan en uit in één bit opslaan, waarbij een programma bepaalt welke toestand “aan” betekent.
bitsnelheid
Een bitsnelheid is het aantal gecodeerde of overgedragen bits per seconde, meestal geschreven in bit/s, kbit/s of Mbit/s.
Een overdrachtssnelheid van 16 Mbit/s komt overeen met 2 MB/s voordat eventuele communicatieoverhead wordt meegerekend.
byte
Een byte is een groep van acht bits, die 256 mogelijke patronen oplevert en meestal de kleinste adresseerbare geheugeneenheid vormt.
De byte 01000001 kan het getal 65 of de letter “A” weergeven, afhankelijk van de interpretatie.

C

codepagina
Een codepagina is een koppeling van tekens aan codes, vaak een oudere tabel van acht bits waarvan de betekenis van hogere bytewaarden verschilt van die in andere tabellen.
De byte 0xE9 geeft “é” in Latin-1 en “й” in Windows-1251, dus moet de lezer de codepagina kennen.
codepunt
Een codepunt is een genummerde positie in de coderuimte van Unicode, geschreven als U+ gevolgd door hexadecimale cijfers, zoals U+00E9.
Het codepunt voor “é” blijft U+00E9, ongeacht of de bytes met UTF-8, UTF-16 of UTF-32 worden opgeslagen.
compressie
Compressie vermindert de benodigde opslag of overdracht door gegevens in minder bits te coderen; of exact herstel mogelijk is, hangt ervan af of de methode verliesloos is.
Een kleinere gecodeerde afbeelding wordt sneller over dezelfde verbinding overgedragen omdat minder bits hoeven te worden verstuurd.
compressie met verlies
Compressie met verlies laat geselecteerde informatie blijvend weg en levert een kleinere representatie op waaruit een benadering van het origineel wordt gereconstrueerd.
Een JPEG van hoge kwaliteit kan sterk op de foto lijken en toch de oorspronkelijke pixels niet exact kunnen reproduceren.
compressieartefact
Een compressieartefact is een ongewenste zichtbare of hoorbare verandering door benaderingen die tijdens codering met verlies ontstaan.
Bij een sterke JPEG-instelling kan de scherpe rand van een letter vervagen of kunnen blokvormige veranderingen in nabijgelegen pixels ontstaan.
compressieverhouding
De compressieverhouding is de oorspronkelijke gegevensgrootte gedeeld door de gecomprimeerde grootte, waarbij beide hoeveelheden in dezelfde eenheid zijn uitgedrukt.
Een bestand verkleinen van 15 MB naar 5 MB geeft een compressieverhouding van 3:1, geen besparing van 3 MB.
cyclische overloop
Cyclische overloop is gedrag waarbij alleen een vast aantal lage bits wordt bewaard, waardoor opgeslagen gehele waarden de beschikbare patronen cyclisch doorlopen.
Bij cyclische overloop zonder teken met acht bits wordt na verhoging van 254 met drie de waarde 1 opgeslagen, na een volledige cyclus van 256.

D

drijvendekommarepresentatie
Drijvendekommarepresentatie slaat een teken, een mantisse en een door een exponent gegeven schaal op, zodat één formaat sterk verschillende groottes kan weergeven.
Hetzelfde formaat kan een kleine gemeten lengte en een veel grotere afstand weergeven door de exponent te veranderen.

E

eindige binaire ontwikkeling
Een eindige binaire ontwikkeling eindigt na een beperkt aantal binaire posities; een vereenvoudigde breuk heeft die precies dan als de noemer een macht van twee is.
De breuk 5/8 eindigt als 0,101₂, terwijl 1/10 een repeterende reeks binaire cijfers nodig heeft.
exponentverschuiving
Een exponentverschuiving is een vaste waarde die bij de werkelijke exponent wordt opgeteld, zodat de opgeslagen exponent een bitveld zonder teken kan zijn.
Een opgeslagen binary32-exponent van 126 geeft een werkelijke exponent van −1 nadat de verschuiving van 127 is afgetrokken.

G

gegevenstype
Een gegevenstype specificeert het soort waarde dat een programma verwerkt en helpt bepalen hoe de opgeslagen bitpatronen worden geïnterpreteerd.
Een byte die wordt geïnterpreteerd als geheel getal met teken, kan een andere waarde hebben dan dezelfde byte zonder teken.
geheel getal zonder teken
Een geheel getal zonder teken geeft een niet-negatief geheel getal weer met positieve binaire gewichten op elke positie van een vaste bitbreedte.
De byte 11111111 geeft 255 weer wanneer het gegevenstype een geheel getal zonder teken van acht bits aangeeft.
generatieverlies
Generatieverlies is verder verlies van informatie dat kan oplopen wanneer media herhaaldelijk worden gedecodeerd en met een methode met verlies worden gecodeerd.
Een bewerkte foto herhaaldelijk opnieuw als JPEG coderen en opslaan kan extra verlies opleveren, ook als elke opgeslagen versie er vergelijkbaar uitziet.
grondtal
Het grondtal van een talstelsel bepaalt het aantal cijferwaarden en de factor tussen opeenvolgende plaatswaarden voor gehele getallen.
Een geschreven “10” betekent twee bij grondtal 2, tien bij grondtal 10 en zestien bij grondtal 16.

H

hexadecimaal cijfer
Een hexadecimaal cijfer is één symbool uit 0–9 of A–F dat een waarde van nul tot en met vijftien geeft op één positie met grondtal 16.
Het hexadecimale cijfer E betekent veertien, terwijl de waarde 0x14 met twee cijfers decimaal twintig betekent.
hexadecimaal talstelsel
Het hexadecimale talstelsel heeft grondtal 16 en gebruikt de cijfers 0–9 en A–F, waarbij elk cijfer overeenkomt met vier binaire bits.
De byte 11001010 is korter te schrijven als 0xCA, waarbij elke nibble duidelijk een eigen cijfer behoudt.
huffmancodering
Huffmancodering bouwt een prefixvrije code met variabele lengte op basis van symboolfrequenties en geeft veelvoorkomende symbolen kortere codes om de gegevensgrootte te verkleinen.
Een veelvoorkomende letter kan een code van één bit krijgen, maar het bestand heeft ook informatie nodig waarmee decoderen mogelijk is.

I

IEEE 754
IEEE 754 is de standaard die veelgebruikte formaten en gedrag voor drijvendekommagetallen definieert, waaronder normale waarden, afronding en speciale waarden.
Binary32 en binary64 volgen IEEE 754, zodat hun veldindeling met dezelfde regels kan worden gedecodeerd.
impliciete bit
De impliciete bit is de voorste 1 die voor een normale binaire drijvendekommamantisse wordt aangenomen en precisie oplevert zonder een opgeslagen fractiebit.
Binary32 slaat 23 fractiebits op, maar heeft 24 significante bits voor normale waarden omdat de voorste 1 impliciet is.

K

kleurdiepte
Kleurdiepte is het aantal bits dat wordt gebruikt om de kleurcode van één pixel weer te geven en bepaalt hoeveel verschillende kleurcodes mogelijk zijn.
Een paletindex van vier bits kan uit zestien kleuren kiezen, terwijl RGB van 24 bits veel meer combinaties biedt.
kleurenpalet
Een kleurenpalet is een opgeslagen tabel met geselecteerde kleuren, waardoor elke pixel een tabelvermelding met een kleinere indexwaarde kan aanduiden.
Een pictogram met zestien kleuren kan pixelindices van vier bits gebruiken, terwijl de daadwerkelijke RGB-kleuren in het palet staan.
kwantisatie
Kwantisatie rondt een gemeten sampleamplitude af op een van de beschikbare opslagniveaus en introduceert een fout die als ruis hoorbaar kan zijn.
Als je de bitdiepte verhoogt, komen kwantisatieniveaus dichter bij elkaar zonder dat de tijdstippen van de samples veranderen.

M

mantisse
Een mantisse is de significante cijferreeks die met een macht van het grondtal wordt geschaald; een normale binaire mantisse begint met 1.
In 1,011₂ × 2⁴ is de mantisse 1,011₂, terwijl de exponent de algehele schaal bepaalt.
meest significante bit
De meest significante bit is de meest linkse bit van een geschreven patroon met vaste bitbreedte en staat op de positie met de hoogste orde.
Als je in een byte zonder teken de meest significante bit verandert en de andere bits gelijk blijven, verandert de waarde met 128.
MIDI
MIDI slaat instructies voor een muzikale uitvoering op of geeft die door, zoals noten en timing, in plaats van de geluidsgolfvorm van een opname.
Een MIDI-melodie kan met verschillende instrumentklanken worden afgespeeld, maar bewaart niet de opgenomen stem van een zanger.
minst significante bit
De minst significante bit is de meest rechtse bit van een binair geheel getal en draagt de waarde van de eenhedenpositie bij.
De minst significante bit van 10110 is 0, dus is het gehele getal even, ongeacht de andere bits.

N

NaN
NaN, oftewel “geen getal”, is een speciale categorie drijvendekommagetallen met een exponentveld dat alleen enen bevat en een fractie ongelijk aan nul.
Een ongeldige numerieke bewerking zoals nul gedeeld door nul kan NaN opleveren in plaats van een gewoon getal.
nibble
Een nibble is een groep van vier bits, die zestien mogelijke patronen oplevert en precies overeenkomt met één hexadecimaal cijfer.
De byte 10100111 valt uiteen in de nibbles 1010 en 0111, die de hexadecimale cijfers A en 7 zijn.
normalisatie
Unicode-normalisatie zet equivalente tekenreeksen om naar een gemeenschappelijke vorm, zodat tekenreeksen met verschillende codepuntreeksen kunnen worden vergeleken.
Een vooraf samengestelde letter met accent en de reeks van basisletter plus accent kunnen vóór vergelijking van tekenreeksen worden genormaliseerd.

O

onderloop
Onderloop betreft resultaten die te klein worden voor normale drijvendekommarepresentatie en als subnormale waarden of nul kunnen worden opgeslagen.
Een berekening die nul nadert, kan relatieve precisie verliezen wanneer de resultaten in het subnormale bereik komen.
overloop
Overloop ontstaat wanneer een berekend resultaat buiten de waarden ligt die het gekozen getalformaat kan weergeven.
Voor een teller zonder teken van acht bits ligt een resultaat van 260 buiten het bereik van 0–255 en moet overloop worden afgehandeld.

P

perceptuele codering
Perceptuele codering vermindert mediagegevens op basis van menselijke gevoeligheid en besteedt minder ruimte aan details die mensen waarschijnlijk niet opmerken.
Een audio-encoder kan in een MP3-luisterkopie een zachte toon verwijderen die wordt gemaskeerd door een harder geluid met een nabije frequentie.
pixel
Een pixel is één positie in het raster van een rasterafbeelding en bevat een kleurwaarde of een index die een kleur uit een palet selecteert.
Een rasterafbeelding van 400 × 300 bevat 120.000 pixels, ongeacht hoe groot de afbeelding wordt weergegeven.
positienotatie
Positienotatie geeft elk cijfer een waarde die wordt bepaald door zowel het cijfer zelf als de positie ervan binnen het geschreven getal.
Als je een 1 van de eenhedenpositie naar de positie voor achten verplaatst, verandert de bijdrage van één naar acht.
precisie
De precisie van een numeriek formaat beschrijft hoeveel significant detail het bewaart; bij drijvendekommarepresentatie bepalen fractiebits de afstand tussen waarden op een gegeven schaal.
Binary64 bewaart meer significante bits dan binary32, wat voor dezelfde invoer meestal de afrondingsfout verkleint.
prefixvrije code
Een prefixvrije code heeft geen codewoord dat het begin is van een ander, zodat een decoder symbolen zonder toegevoegde scheidingstekens kan herkennen.
Met A = 0, B = 10 en C = 11 worden de bits 011 direct gedecodeerd als A gevolgd door C.

R

rasterafbeelding
Een rasterafbeelding geeft een afbeelding weer als een rechthoekig raster van pixelwaarden, met een breedte, hoogte en kleurdiepte.
Een digitale foto wordt als rasterafbeelding opgeslagen omdat elk deel van de gedetailleerde afbeelding een pixelwaarde nodig heeft.
rasterisatie
Rasterisatie zet vorminstructies om in een pixelraster met een gekozen resolutie, zodat een scherm de resulterende afbeelding kan tonen.
De contour van een vectorletter wordt gerasterd naar schermpixels wanneer een document de letters weergeeft.
redundantie
Redundantie is herhaalde of voorspelbare informatie die het mogelijk kan maken gegevens korter te beschrijven zonder de oorspronkelijke inhoud te verliezen.
Een lange rij met één kleur heeft redundantie die run-length encoding kan vervangen door een kort aantal.
resolutie
De resolutie van een representatie is de kleinste onderscheidbare stap op de gekozen schaal; bij vastekommarepresentatie wordt die bepaald door het aantal fractiebits.
Vijf binaire fractiebits geven een stap van 1/32, dus moet een waarde halverwege twee stappen worden afgerond.
RGB
RGB geeft een kleur weer met intensiteiten van rood, groen en blauw licht, meestal met acht bits voor elk kanaal in een pixel.
Volledig rood en groen zonder blauw geven het gele licht van RGB (255, 255, 0).
run-length encoding
Run-length encoding vervangt een opeenvolgende reeks van één symbool door het aantal en het symbool en werkt het best wanneer identieke reeksen lang zijn.
Volgens een afspraak met aantal en symbool wordt “MMMMMMNN” gelijk aan “6M2N”, terwijl de codering van afwisselende symbolen groter kan worden.

S

sample
Een audio-sample is één meting van de amplitude van een signaal op een bepaald tijdstip, opgeslagen als een getal met de bitdiepte van de opname.
Eén bemonsteringstijdstip bij stereo levert een meting voor elk van de twee kanalen op, waardoor meer gegevens worden opgeslagen.
SI-voorvoegsel voor opslageenheden
Een SI-voorvoegsel voor opslageenheden schaalt een opslageenheid met een decimale macht, zoals duizend voor kilo of een miljoen voor mega.
Een hoeveelheid gegevens van 2 MB bevat 2.000.000 bytes, ook als een systeem de grootte daarnaast in MiB opgeeft.
subnormale waarde
Een subnormale waarde is een zeer kleine drijvendekommawaarde met een exponentveld dat alleen nullen bevat, een fractie ongelijk aan nul en geen impliciete voorste 1.
Subnormale patronen vullen een deel van de ruimte tussen de kleinste positieve normale waarde en nul.

T

teken-grootterepresentatie
Teken-grootterepresentatie slaat een tekenbit afzonderlijk op van de bits voor de positieve grootte, waardoor er verschillende patronen zijn voor positieve en negatieve nul.
In teken-grootterepresentatie met acht bits betekent 10000110 de waarde −6; de laagste zeven bits geven direct de grootte.
tekenbit
Een tekenbit is een bit die aangeeft of een waarde met teken negatief is, waarbij het getalformaat de interpretatie bepaalt.
In tweecomplement duidt een voorste 1 een negatieve waarde aan en heeft die bit ook een negatief plaatsgewicht.
tekencode
Een tekencode is het getal dat volgens een afgesproken tabel aan een teken wordt toegekend, zodat tekstsymbolen als bitpatronen kunnen worden opgeslagen.
Het teken “3” heeft ASCII-code 51, hoewel de numerieke waarde van het cijfer drie is.
tekencodering
Een tekencodering bepaalt hoe geldige tekenwaarden worden omgezet in een reeks code-eenheden of bytes voor opslag en overdracht.
UTF-8 codeert “é” als C3 A9, terwijl een codepuntlabel het teken aanduidt zonder die bytereeks te geven.
tekenomkering
Tekenomkering verandert een getal in zijn tegengestelde waarde; binnen tweecomplement doe je dit door alle bits om te keren en één op te tellen.
Als je het teken van het patroon voor +6 in acht bits omkeert, krijg je het patroon voor −6, terwijl de minimumwaarde geen positieve tegenhanger heeft.
tekenuitbreiding
Tekenuitbreiding verbreedt een geheel getal met teken door de tekenbit naar elke nieuwe positie links te kopiëren, zodat de waarde behouden blijft.
De waarde met teken 1010 van vier bits wordt verbreed tot 11111010, waarbij −6 behouden blijft in tweecomplement met acht bits.
tweecomplement
Tweecomplement is een representatie van gehele getallen met teken waarbij de hoogste bit een negatief gewicht heeft en de overige bits positieve binaire gewichten behouden.
Het patroon 11111010 geeft −6 weer in een veld met teken van acht bits, maar 250 als het zonder teken wordt geïnterpreteerd.

U

Unicode
Unicode is een gedeelde tekenstandaard die codepunten toekent aan verschillende schriftsystemen en coderingen definieert om geldige tekenwaarden op te slaan.
De letters “A”, “Ж” en “中” hebben verschillende Unicode-codepunten binnen dezelfde coderuimte.
UTF-8
UTF-8 is een Unicode-codering met variabele lengte die één tot vier bytes per geldig codepunt van een teken gebruikt en ASCII-bytes behoudt.
Het woord “café” gebruikt vijf UTF-8-bytes omdat de laatste letter een reeks van twee bytes nodig heeft.
UTF-16
UTF-16 codeert geldige tekenwaarden in één of twee code-eenheden van 16 bits en gebruikt een surrogaatpaar voor waarden boven U+FFFF.
De emoji “😀” neemt twee UTF-16-code-eenheden in, D83D en DE00, hoewel het één codepunt is.

V

vaste bitbreedte
Een vaste bitbreedte is een vast aantal bits dat voor elke waarde wordt gereserveerd en dat beperkt hoeveel verschillende patronen kunnen worden opgeslagen.
Een teller van acht bits kan geen negende bit opslaan wanneer een resultaat 256 bereikt; de regel voor overloop is dan van belang.
vastekommarepresentatie
Vastekommarepresentatie interpreteert opgeslagen bits met een afgesproken aantal breukposities, waardoor waarden op een vaste schaal gelijkmatig verdeeld zijn.
Met vier fractiebits geeft een ruw geheel getal van 40 de waarde 40/16, oftewel 2,5, weer in vastekommarepresentatie zonder teken.
vectorafbeeldingen
Vectorafbeeldingen beschrijven vormen met geometrische instructies, zodat ze op verschillende groottes opnieuw kunnen worden getekend zonder een opgeslagen pixelraster te vergroten.
Een SVG-logo kan het middelpunt en de straal van een cirkel beschrijven en die cirkel daarna opnieuw tekenen voor een groter scherm.
verliesloze compressie
Verliesloze compressie levert een codering op waaruit de oorspronkelijke bits exact kunnen worden gereconstrueerd, inclusief elke tekst- of samplewaarde.
Een FLAC-archief kan de audiosamples exact herstellen, ook al is het opgeslagen aantal bytes kleiner.
verminkte tekst door verkeerde tekencodering
Verminkte tekst door verkeerde tekencodering ontstaat wanneer een lezer opgeslagen bytes decodeert met een andere codering dan waarmee ze zijn geschreven.
“café” in UTF-8 kan verschijnen als “café” wanneer de bytes als Windows-1252 worden gedecodeerd.
videobeeld
Een videobeeld is één afbeelding in een getimede reeks; het aantal beelden per seconde geeft aan hoeveel van zulke afbeeldingen per seconde worden getoond.
Bij 25 beelden per seconde bevat één seconde ruwe video vijfentwintig volledige afbeeldingen voordat audio wordt meegeteld.

W

woordenboekmethode
Een woordenboekmethode comprimeert gegevens door herhaalde reeksen te vervangen door verwijzingen naar reeksen die de decoder kent of reconstrueert.
Een herhaalde woordgroep kan worden weergegeven met een afstand terug in de gedecodeerde tekst en een te kopiëren lengte.

#

0x-voorvoegsel
Het 0x-voorvoegsel geeft aan dat de daaropvolgende cijfers in hexadecimale notatie staan; het is een notatiemarkering en voegt geen cijferpositie toe.
In 0x3A dragen de cijfers 3 en A drie keer zestien en tien keer één bij; het voorvoegsel geeft het grondtal aan.

Over deze les

Door StudeliFout melden

Maak je eigen Studiemateriaal

Maak van je aantekeningen, slides en documenten Leermodules, Oefenvragen, Flashcards en 6 andere tools.

Aan de slag