Binary Numbers & IP Addresses
Præsenter som slidesLæringsmål
- Kan forklare sammenhængen mellem binære tal og decimaler
- Kan konvertere binær ↔ decimal uden indbyggede funktioner
- Kan bruge loops og conditionals til matematiske problemer
- Kan forklare, hvordan en IP-adresse er opbygget
- Kan bygge en IP-omformer der konverterer begge veje mellem binær og decimal
Binære tal og IP-adresser
Computere tænker i binære tal — kun 0 og 1. Du har sikkert allerede noget kendskab til det binære talsystem og hvordan man omregner mellem binær og decimal. Her kombinerer du den viden med C#, loops og conditionals — og bygger en rigtig IP-omformer.
Binær og decimal — grundideen
I decimal tæller hvert ciffer en potens af 10 (enere, tiere, hundreder). I binær tæller hvert ciffer en potens af 2:
Bit: 1 0 1 0
↓ ↓ ↓ ↓
Potens: 8 4 2 1
1·8 + 0·4 + 1·2 + 0·1 = 10 (decimal)
Hvert ciffer kaldes en bit. 8 bits = 1 byte. Tallet 255 i decimal er 11111111 i binær — alle 8 bits sat til 1.
| Decimal | Binær |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 2 | 10 |
| 5 | 101 |
| 10 | 1010 |
| 75 | 01001011 |
| 170 | 10101010 |
| 187 | 10111011 |
| 255 | 11111111 |
Potenser til en 8-bit oktet (husk rækkefølgen):
128 64 32 16 8 4 2 1
IP-adresser og oktetter
En IPv4-adresse består af fire tal (oktetter) adskilt af punktum — hver mellem 0 og 255:
192.168.1.1
│ │ │ │
okt1 okt2...
Hver oktet er 8 bits. Eksempel:
192 = 11000000
168 = 10101000
1 = 00000001
1 = 00000001
IP-adresser identificerer enheder på et netværk. Private adresser (fx 192.168.x.x, 10.x.x.x) bruges internt. Public adresser er unikke på internettet.
Videoer
Se det i praksis
IP Addresses Explained | NetworkChuck
Projekt: Binær IP-omformer
I skal bygge en omformer, der tager en IP-adresse med 4 talgrupper — hver gruppe er et 8-cifret binært tal (oktet) — og kan konvertere begge veje:
Binær → decimal:
10111011.01001011.10101010.01010101 → 187.75.170.85
Decimal → binær:
187.75.170.85 → 10111011.01001011.10101010.01010101
Krav
- Input skal være 4 grupper adskilt af punktum
- Hver gruppe skal være præcis 8 bits (kun
0og1) i binær tilstand - Hver decimal-oktet skal være mellem 0 og 255
- Programmet skal kunne konvertere begge veje
- Designet er op til jer (konsol, menu, Blazor — se nedenfor)
I må ikke bruge indbyggede konverteringsfunktioner som Convert.ToString(n, 2), Convert.ToInt32(s, 2) eller tilsvarende. I skal bruge if/else, loops og den logik I har lært selv!
En mulig løsning kan bygges som en Blazor-baseret app med titlen Binær Kodeomformer — med inputfelter, validering og knap til at konvertere begge veje.
Binær → decimal med loop
Gå bit for bit fra venstre mod højre og akkumuler potenser af 2:
For en hel IP-adresse: split strengen ved ., valider at der er 4 dele, og kør metoden på hver oktet.
Decimal → binær med loop
Træk successivt de binære potenser fra tallet — samme princip som i pensum om løkker:
Validering med if/else og loops
En robust omformer skal validere input før konvertering:
// Split IP ved punktum
string[] parts = input.Split('.');
if (parts.Length != 4)
{
Console.WriteLine("IP skal have præcis 4 dele!");
return;
}
for (int i = 0; i < 4; i++)
{
// Binær: præcis 8 tegn, kun 0 og 1
if (parts[i].Length != 8)
{
Console.WriteLine("Hver oktet skal være 8 bits!");
break;
}
for (int j = 0; j < 8; j++)
{
if (parts[i][j] != '0' && parts[i][j] != '1')
{
Console.WriteLine("Kun 0 og 1 er tilladt i binær oktet!");
break;
}
}
}
For decimal input: brug int.TryParse og tjek number >= 0 && number <= 255 for hver oktet.
Programstruktur — skitse
Et godt udgangspunkt er en menu-løkke (while) der spørger brugeren:
- Binær → decimal
- Decimal → binær
- Afslut
Inde i hver gren: læs input → valider med loops og if/else → konverter oktet for oktet → udskriv resultat.
Git-trin
- Branch:
main - Commit:
feat: ip-omformer binær decimal
Hjælp og øvelse
Er du usikker på omregning, så øv dig med disse ressourcer:
- Learn Binary Conversions — interaktiv guide (Simulations4All) — trin-for-trin mellem binær og decimal
- Cisco Binary Game — spil dig til hurtigere binær konvertering
- Subnetting og binær — praktisk guide (CCNA Training) — god læsning hvis subnetting og oktetter driller
Dette emne kombinerer det du har lært: variabler, loops, conditionals, metoder og strings (Split, sammensætning) — anvendt på et rigtigt netværksproblem.
Binær i C# — bitvise operationer (bonus)
C# har operatorer til at arbejde direkte med bits — må ikke bruges som erstatning i projektet, men er nyttige at kende:
Opsummering
- En IPv4-adresse har 4 oktetter à 8 bits (0–255 decimal)
- Binær → decimal: læg potenser sammen hvor bit er
1 - Decimal → binær: træk potenser fra (128, 64, 32 …) med loops
- Projektet skal konvertere begge veje uden indbyggede konverteringsfunktioner
- Brug nested loops og if/else til validering af input
Test din viden
Spørgsmål 1
Hvad er en oktet i en IPv4-adresse?
En IPv4-adresse har 4 oktetter adskilt af punktum. Hver oktet er 8 bits, dvs. decimal 0–255 — fx 192.168.1.1.
Spørgsmål 2
Hvad er decimalværdien af binær 1010?
1010 = 1×8 + 0×4 + 1×2 + 0×1 = 10. Læg potenserne 128, 64, 32, 16, 8, 4, 2, 1 sammen, hvor bit er 1.
Spørgsmål 3
Hvorfor må I ikke bruge Convert.ToString(n, 2) i IP-projektet?
Projektet tester jeres forståelse af binær logik — I skal bruge potens-array, loops og betingelser, som vist i kapitlet, ikke indbyggede konverteringsfunktioner.
Spørgsmål 4
Hvad skal hver binære gruppe i input have for IP-omformeren?
Hver oktet er 8 bits. Input som 10111011.01001011... skal have 4 grupper à 8 tegn, kun 0 og 1, adskilt af punktum.
Spørgsmål 5
Hvordan konverterer OctetFromBinary fra binær til decimal?
Metoden går bit for bit og lægger 128, 64, 32 … 1 til resultatet, når binary[i] == '1'. Det er grundprincippet for binær → decimal.
Spørgsmål 6
Hvad er potens-rækkefølgen for en 8-bit oktet (fra venstre)?
Venstre bit er 128 (2⁷), højre er 1 (2⁰). Husk rækkefølgen — den bruges både ved binær → decimal og decimal → binær.
Spørgsmål 7
Hvad skal validering tjekke for decimal input per oktet?
En oktet kan maksimalt være 255 (11111111). Brug int.TryParse og tjek number >= 0 && number <= 255 for hver del efter Split('.').