In de vorige activiteit maakten we een lege array met new int[5] en vulden we
hem daarna element per element. Vaak ken je de inhoud echter al op voorhand. Dan
kan je de array meteen vullen bij de declaratie.
Je zet de waarden gewoon tussen accolades, gescheiden door komma’s:
int[] x = { 1, 2, 3 };
C# telt zelf hoeveel waarden er staan en maakt een array van die grootte aan. In
dit voorbeeld is x.Length dus 3, met x[0] gelijk aan 1, x[1] gelijk aan
2 en x[2] gelijk aan 3.
Dit werkt voor elk type. Een rij namen bewaar je bijvoorbeeld zo:
string[] dagen = { "ma", "di", "wo", "do", "vr" };
We gebruiken een array met vaste inhoud om een getal kleiner dan 1024 om te zetten naar zijn binaire vorm. Het idee: elk getal is een som van machten van 2. We bewaren de machten van 2 (van groot naar klein) in een array:
int[] machtenVan2 = { 512, 256, 128, 64, 32, 16, 8, 4, 2, 1 };
Deze array bevat 10 elementen: de tien machten van 2 van \(2^9 = 512\) tot \(2^0 = 1\).
We lopen met een foreach-lus over elk element. Voor elke macht doen we een
gehele deling van het getal door die macht. Levert die deling als resultaat
1 op, dan zit die macht in het getal en trekken we ze af. Levert de deling 0
op, dan zit die macht er niet in. Het resultaat van elke deling (0 of 1) is
precies het bijbehorende bit.
int[] machtenVan2 = { 512, 256, 128, 64, 32, 16, 8, 4, 2, 1 };
Console.Write("Geef een getal: ");
int invoer = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Het getal in binaire vorm is");
foreach (int macht in machtenVan2)
{
int resultaat;
resultaat = invoer / macht;
if (resultaat == 1)
{
invoer -= macht;
}
Console.Write(resultaat);
}
We gebruiken hier
Console.Writein plaats vanConsole.WriteLine.Writezet de uitvoer op dezelfde regel, zonder naar een nieuwe regel te springen. Zo komen de tien bits netjes naast elkaar te staan.
Geef je hier 15 als invoer, dan is 15 de som van 8 + 4 + 2 + 1. De binaire
vorm is dan 1111, voorafgegaan door voorloopnullen omdat de array tien
elementen heeft:
Geef een getal: 15
Het getal in binaire vorm is
0000001111
Op die manier bepalen we, machtje per machtje, welke machten van 2 in het getal aanwezig zijn, en bouwen we de binaire voorstelling op.