Ga naar hoofdinhoud

Labo 3 — Talstelsels

In dit labo oefen je met binair en hexadecimaal rekenen, bitwise operaties en tekstcodering. De conversie-oefeningen doe je op papier of in je schrift — toon altijd je werkwijze.


Oefening 1 — Decimaal naar binair

Zet de volgende getallen om naar binair via herhaalde deling door 2. Toon de volledige delingstabel.

  1. 291029_{10}
  2. 451045_{10}
  3. 15610156_{10}

Oefening 2 — Binair naar decimaal

Zet de volgende binaire getallen om naar decimaal. Toon de positionele waarden.

  1. 110121101_2
  2. 10110210110_2
  3. 10110100210110100_2

Oefening 3 — Decimaal naar hexadecimaal

Zet de volgende getallen om naar hexadecimaal via herhaalde deling door 16. Toon de delingstabel.

  1. 25510255_{10}
  2. 76410764_{10}
  3. 3000103000_{10}

Oefening 4 — Hexadecimaal naar decimaal

Zet de volgende hexadecimale getallen om naar decimaal. Toon de berekening per positie.

  1. A416\text{A4}_{16}
  2. 1F316\text{1F3}_{16}
  3. FF16\text{FF}_{16}

Oefening 5 — Binair naar hexadecimaal

Zet de volgende binaire getallen om naar hexadecimaal via groepen van 4 bits.

  1. 11110101211110101_2
  2. 10010111210010111_2
  3. 10110011210110011_2

Oefening 6 — Hexadecimaal naar binair

Zet de volgende hexadecimale getallen om naar binair. Schrijf elk hex-cijfer als 4 bits.

  1. 3F16\text{3F}_{16}
  2. C816\text{C8}_{16}
  3. 4B216\text{4B2}_{16}

Oefening 7 — Bitwise operaties op papier

Bereken de uitkomst van de volgende operaties. Werk bit voor bit en toon het schema (zoals in de theorie).

  1. 0b1100 & 0b1010
  2. 0b1100 | 0b0011
  3. 0b1111 ^ 0b1010
  4. ~0b00001010 (geef het resultaat als 8-bit getal)
  5. 0b0110 << 2
  6. 0b11000 >> 2

Oefening 8 — Bitwise in code

Open de browser console (F12 → Console) of een C#-project en voer de volgende expressies uit. Noteer het resultaat en verklaar bij elk waarom het klopt.

0b1100 & 0b1010
0b1100 | 0b0011
0b1111 ^ 0b1010
~10
0b0110 << 2
0b11000 >> 2

Verifieer zo je papieren berekeningen uit oefening 7.


Oefening 9 — CSS-kleur ontleden

De CSS-kleur #3A8FD2 stelt een blauwtint voor. Bereken de drie kleurkanalen.

  1. Splits de hex-kleur op in drie koppels: rood, groen, blauw.
  2. Zet elk koppel om naar decimaal.
  3. Controleer je antwoord in code:
// JavaScript — vul zelf de waarden in en controleer
const kleur = 0x3A8FD2;
const rood = (kleur >> 16) & 0xFF;
const groen = (kleur >> 8) & 0xFF;
const blauw = kleur & 0xFF;
console.log(rood, groen, blauw);
// C# — vul zelf de waarden in en controleer
int kleur = 0x3A8FD2;
int rood = (kleur >> 16) & 0xFF;
int groen = (kleur >> 8) & 0xFF;
int blauw = kleur & 0xFF;
Console.WriteLine($"{rood} {groen} {blauw}");
Doelkleur
#3A8FD2
Jouw invoer

Oefening 10 — ASCII en karaktercodes

Deel A — op papier

Gebruik de ASCII-tabel uit de theorie (of zoek er zelf een op).

1. Wat is de ASCII-waarde van de letter M?

2. Wat is de ASCII-waarde van de kleine letter z?

3. Wat is de ASCII-waarde van het vraagteken (?)?

4. Welk karakter heeft ASCII-waarde 72?

5. Welk karakter heeft ASCII-waarde 101?

6. Welk karakter heeft ASCII-waarde 33?

7. Welke bitwise operatie wisselt een letter tussen hoofd- en kleine letter (A ↔ a)?

Deel B — in code

Verifieer je antwoorden:

// JavaScript
console.log("M".charCodeAt(0));
console.log(String.fromCharCode(72));
console.log("A".charCodeAt(0) ^ 32); // wat krijg je?
// C#
Console.WriteLine((int)'M');
Console.WriteLine((char)72);
Console.WriteLine((char)((int)'A' ^ 32)); // wat krijg je?

Oefening 11 — UTF-8 en bytes

Deel A — theorie

Beantwoord de volgende vragen op basis van de theorie:

1. Hoeveel bytes gebruikt UTF-8 voor het teken A?

2. Hoeveel bytes gebruikt UTF-8 voor het teken é?

3. Hoeveel bytes gebruikt UTF-8 voor het euroteken €?

4. Hoeveel bytes gebruikt UTF-8 voor de emoji 😀?

5. Waarom is UTF-8 achterwaarts compatibel met ASCII?

6. Je opent een bestand en ziet "é" in plaats van "é". Wat is er fout gegaan?

Deel B — interactief

Ga naar de Character Encoding Explorer en doe het volgende:

  1. Typ je naam in en bekijk hoe de bytes eruitzien in ASCII, Unicode en UTF-8.
  2. Probeer een tekst met een accent (zoals café) en bekijk het verschil in bytes t.o.v. pure ASCII.
  3. Simuleer een Mojibake-scenario: codereer tekst in UTF-8 maar lees ze in een andere codering. Wat zie je?

Uitdaging — Kleur manipuleren met bitwise

Je krijgt de CSS-kleur #FF8C00 (een oranje tint). Gebruik uitsluitend bitwise operaties om de volgende vragen te beantwoorden — geen omrekenen via decimaal.

  1. Wat is de waarde van het roodkanaal? (shift + AND)
  2. Maak een nieuwe kleur waarbij het roodkanaal gehalveerd is. (shift op het roodkanaal, daarna terug samenvoegen)
  3. Swap het rood- en blauwkanaal: de nieuwe kleur heeft het originele blauw als rood, en het originele rood als blauw. (tip: XOR-swap of gewoon AND + OR per kanaal)

Schrijf je oplossing in JavaScript of C# en verifieer de resulterende hex-kleur visueel.