Theorie
Inleiding
Zoals iedere programmeur weet, of in ieder geval hoort te weten, bestaat elk karakter uit 1 (één) byte.
Een byte bestaat dan weer uit 8 (acht) bits.
Zo'n bit kan aan of uit staan, of anders gezegt, zo'n bit heeft de 'waarde' 1 of 0.
Daarmee komen we aan op de bitwise operators.
Operatorlijstje
& - AND
| - OR
^ - XOR (exclusive OR)
~ - NOT
>> - shift rechts
<< - shift links
De '&' operator
De bitwise AND wordt vooral gebruikt om bits uit te zetten.
Als in 1 (één) van de 2 bits, een bit de waarde 0 heeft, hebben ze het erna allebei.
Bekijk het volgende voorbeeld:
1001 0101 & 1010 1011 geeft 1000 0001
Zoals je ziet is er precies gebeurt wat daarboven is verteld :)
De '|' operator
De bitwise OR doet precies het tegenovergestelde van de bitwise AND.
Als in 1 (één) van de 2 bits, een bit de waarde 1 heeft, hebben ze het erna allebei.
Voorbeeld:
1001 0101 | 1010 1011 geeft 1011 1111
De '^' operator
De bitwise XOR zet bits aan, op voorwaarde dat de bits die vergeleken worden, niet gelijk zijn.
Als de ene bit waarde 1 heeft, en de ander 0, wordt de uitkomst 1. Bij gelijke waarden wordt dit 0.
Voorbeeld:
1001 0101 ^ 1010 1011 geeft 0011 1110
De '~' operator
De bitwise NOT maakt van elke 0 een 1, en van elke 1 een nul.
Voorbeeld:
~ 1001 0101 geeft 0110 1010
De '<<' & '>>' operators
Met de shift operators verschuif je de bits in een byte naar links of rechts afhankelijk van de operator.
Een shift naar links zal de waarde van de byte met 2 vermenigvuldigen, de rechts zorgt dat er door 2 gedeeld wordt.
Een shift naar links zorgt ervoor dat er rechts een bit met waarde 0 wordt toegevoegd, de rechtse vervalt.
Een shift naar rechts zorgt ervoor dat er links een bit met waarde 0 wordt toegevoegd, de links vervalt.
Let op! Uit de voorgaande twee uitspraken kun je opmaken dat er dus geen rotatie plaatsvind!
De bit die er links of rechts wordt afgeschoven komt niet meer terug!
Voorbeeld:
0000 0001 << 1 (deze 1 (één) staat voor het aantal verschuivingen, dit hoort bij het statement!) geeft 0000 0010
0000 0010 << 2 geeft 0000 1000
1000 0000 >> 1 geeft 0100 0000
0100 0000 >> 4 geeft 0000 0100