Artikel: Artikel [Den perfekta inloggningen #1] I och med att du har ett värde: Så här tänker jag när det rör "bitwise comparison" med hjälp av AND. Alla tal omvandlas i datorn till binära tal. Bbitwise comparison innebär ungefär att datorn jämför ett utryckt bit för bit.Den perfekta inloggning #1 artikeln (ASP)
I den tar Pelle upp hur man ska använda roller för att öka säkerheten genom att
länka ihop en användar tabell med en roll tabell.
Men om det ska fungera med bitoperationer bör väl inte en användare vara direkt länkad till en roll, utan till ett rollvärde som är en summering av de olika rollerna. Då skulle det ge att en användare kan ha flera olika roller.
Eller har jag missförstått det?Sv: Den perfekta inloggning #1 artikeln (ASP)
1+2+4+64 = 71
Så innehåller (71) rollerna för 1,2,4 och 64. Det är så det går till.
if (71 and 4) then ' jepp, han är med i roll 4 osv..Sv: Den perfekta inloggning #1 artikeln (ASP)
<code>
1 = 1
2 = 10
4 = 100
8 = 1000
16 = 10000
32 = 100000
64 = 1000000
128 = 10000000
</code>
Där 1000 binärt betyder (1 x 8) + (0 x 4) + (0 x 2) + (0 x 1) = 8 i vanlig talform. Att 1 står först betyder att den fjärde positionen skall multipliceras med 8. Fjärde positionen är alltid 8. Femte är 16 osv.
Om en användare innehar rollerna 1, 2 och 8 ger det en summa på 11. 11 i binär form är 1011. Dvs (1 x 8) + (0 x 4) + (1 x 2) + (1 x 1) = 11.
Jämför vi sen binärt dessa två värden 1011 och (AND) den roll vi säker så ger denna jämförelse ett sant värde.
<code>
SummaVarde = 11
Roll = 2
If SummaVarde AND Roll Then
...
End If
</code>
Detta kan också skrivas/tänkas som
<code>
SummaVarde = 1011
Roll = 10
If 1011 AND 10 Then
...
End If
</code>
Här ser vi att fjärde och tredje position i 1011 dvs 10 är detsamma som värdet i Roll-variabeln. Roll = 10. Alltså ger jämförelsen ett sant värde. Roll = 10 finns i SummaVarde (1011).
Det finns mer matimatiska förklaringar, men eftersom jag är programmerare och inte matimatiker nöjer jag mig med att tänka på detta sätt när jag jobbar med bitwise comparison.