Toepassen
Inleiding
Nu we de werking van de bitwise operators hebben bekeken, kunnen we er wat mee gaan doen.
We gaan enkele standaar PHP functies herschrijven met de opgedane kennis.
Custom 'strtolower()' en 'strtoupper()'
Deze twee functies maken alle chars geven in de parameter in lower-, danwel uppercase.
Dit gaat wij ook doen, met de volgende voorkennis:
In de ASCII tabel heeft de lower- en uppercase versie van een letter dezelfde bitreeks,
op 1 (één) bit na, de 6e bit (die staat voor 32).
Dat maakt dus elke lowercase letter 32 groter in waarde dan de uppercase variant.
Ok, laten we PHP'en :)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# Custom strtoupper() door het uitzetten van de 6e bit.
function strhoofdletters( $string )
{
# We willen wel ALLE bytes vervangen, dat doen we dus met 'n loopje.
# Dit kan omdat elke string eigenlijk een array van karakter is.
for( $i = 0; isset( $string[$i] ); $i++ )
{
# Hier gaan we dus de 6e bit uitzetten met de '&' operator.
# We hebben dus een getal nodig met de volgende bitreeks:
# 1101 1111, dit zorgt er dus voor dat de reeks hetzelfde blijft, op de 6e bit na :)
# Dit getal is, 223.
$string[$i] = $string[$i] & 223;
}
# En nu returnen we de uppercase string
return $string;
}
# Custom strtolower door het aanzetten van de 6e bit.
function strkleineletters( $string )
{
# Zelfde als bij strhoofdletters()
for( $i = 0; isset( $string[$i] ); $i++ )
{
# Hier gaan we dus de 6e bit aanzetten met de '|' operator.
# We hebben dus een getal nodig met de volgende bitreeks:
# 0010 0000, dit zorgt er dus voor dat de reeks hetzelfde blijft, op de 6e bit na :)
# En zoals eerder gezegt is dit 32.
$string[$i] = $string[$i] | 32;
}
# En nu returnen we de lowercase string
return $string;
}
?>
Vergelijkingen met de bitwise operators
Hier moet je goed opletten, kijk maar eens naar deze twee voorbeelden:
Conclusie
Met de bitwise operators kun je bits in een byte veranderen om deze een andere waarde te geven.
Dit hoef je niet nuttig te vinden maar het is altijd leuk om te weten.
Zo kun je ook je vriendjes imponeren door de volgende functie te gebruiken.
Deze functie laat van een karakter zien uit welke bitreeks deze bestaat.
De kennis die daarbij nodig is, is de volgende:
De 8e bit (de meest linkse) staat voor 128, de 7e voor 64, de 6e voor 32, ..., de 2de voor 2 en de eerste voor 1.
De functie ziet er als volgt uit:
Succes ermee!