SIDEBAR
»
S
I
D
E
B
A
R
«
Integer van/naar bitArray
juli 18th, 2009 by Stephan van Rooij

Het is soms handig om een heleboel booleans op te slaan als een integer. Waarom je dit zou willen doen is simpel. Je kan dan namelijk altijd het aantal booleans groter maken. En de waarde nog steeds in een veld opslaan. Een voorbeeld is bijvoorbeeld als je de bezetting van een ruimte wil opslaan. tussen 8 en 9 bezet, tussen 9 en 10 vrij, tussen 10 en 11 vrij en tussen 11 en 12 bezet.

Dit doe je als volgt.
Eerst geef je alle booleans een index beginnend vanaf 0.
Dus tussen 8 en 9 wordt 0,
tussen 9 en 10 wordt 1
en tussen 10 en 11 wordt 2,
enz.

Code om een bitarray te maken en de waardes op de verschillende indexen in te stellen. Hierna zal het ook worden veranderd in een Integer.

 C# |  copy code |? 
01
02
//Bovenaan
03
using Systems.Collections
04
 
05
BitArray bits = new BitArray(4,false); //We willen een bitarray met 4 bits en alles moet op false staan.
06
 
07
bits[0] = true; //tussen 8 en 9 bezet
08
bits[1] = false; //tussen 9 en 10 vrij
09
bits[2] = false; //tussen 10 en 11 vrij
10
bits[3] = true; //tussen 11 en 12 bezet
11
//Eigenlijk heeft die in het geheugen nu 1 0 0 1 staan.
12
 
13
//Nu gaan we van deze bitarray een integer maken.
14
Int32 waarde = Sytem.BitConverter.ToInt32(bits,0); 
15
//waarde bevat nu 9  (1*2^3 (=8) + 0*2^2 (=0) + 0*2^1 (=0) + 1*2^0 (=1));
16
//Deze waarde kan nu worden opgeslagen.

Nou hebben we een aantal booleans opgeslagen in een integer. Maar nu willen we het er ook nog uithalen.
Dit kunnen we als volgt doen.

 C# |  copy code |? 
01
02
Int32 waarde = 9;
03
BitArray bits = new BitArray(System.BitConverter.GetBytes(waarde));
04
for(Int32 i=0; i < bits.length()-1; i++)
05
{
06
    if(bits[i])
07
        Console.Writeline("Bit met index " + i.ToString() +" is true.");
08
}
09
//Dit zal de volgende output geven:
10
//Bit met index 0 is true.
11
//Bit met index 3 is true.
12

Nu weten jullie een begin van de BitArray. Gebruik goolge om meer te weten te komen.


Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

»  Substance:WordPress   »  Style:Ahren Ahimsa