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.
Oefening 2 — Binair naar decimaal
Zet de volgende binaire getallen om naar decimaal. Toon de positionele waarden.
Oefening 3 — Decimaal naar hexadecimaal
Zet de volgende getallen om naar hexadecimaal via herhaalde deling door 16. Toon de delingstabel.
Oefening 4 — Hexadecimaal naar decimaal
Zet de volgende hexadecimale getallen om naar decimaal. Toon de berekening per positie.
Oefening 5 — Binair naar hexadecimaal
Zet de volgende binaire getallen om naar hexadecimaal via groepen van 4 bits.
Oefening 6 — Hexadecimaal naar binair
Zet de volgende hexadecimale getallen om naar binair. Schrijf elk hex-cijfer als 4 bits.
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).
0b1100 & 0b10100b1100 | 0b00110b1111 ^ 0b1010~0b00001010(geef het resultaat als 8-bit getal)0b0110 << 20b11000 >> 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.
- Splits de hex-kleur op in drie koppels: rood, groen, blauw.
- Zet elk koppel om naar decimaal.
- 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}");
#3A8FD2Oefening 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:
- Typ je naam in en bekijk hoe de bytes eruitzien in ASCII, Unicode en UTF-8.
- Probeer een tekst met een accent (zoals
café) en bekijk het verschil in bytes t.o.v. pure ASCII. - 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.
- Wat is de waarde van het roodkanaal? (shift + AND)
- Maak een nieuwe kleur waarbij het roodkanaal gehalveerd is. (shift op het roodkanaal, daarna terug samenvoegen)
- 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.