hoe zogenaamde flags te ontcijferen?

Status
Niet open voor verdere reacties.

Amorax

Gebruiker
Lid geworden
23 mei 2009
Berichten
13
Ik heb een rijtje queries die als ze aan bepaalde voorwaarden voldoen als resultaat een macht van 2 opleveren, dus de eerste query 1, de tweede query 2, de derde 4, de vierde 8,de vijfde 16, de zesde 32,64,128, 256 etc, ook wel flags genoemd.

Als alle queries doorlopen zijn worden de uitkomsten opgeteld. Door gebruik te maken van deze bepaalde reeks cijfers kan elke individuele waarde slechts 1 keer in het eindresultaat voorkomen.
Stel de uitkomst is 17 dan heeft query 1 voldaan aan de eis (waarde 1) en query 5 (waarde 16).
Nog een voorbeeld. Als de uitkomst 75 is dan is dat opgebouwd uit de waardes 1,2,8 en 64.

Nu is het optellen van alle query uitkomsten een geval van appeltje-eitje. Maar hoe kan ik makkelijk de omgekeerde weg bewandelen. Er zijn namelijk nogal wat uitkomsten mogelijk.
Hoe kan ik eenvoudig zien in uit welke getallen een som is opgebouwd. Wellicht is er een eenvoudige wiskundige regel maar die ken ik niet laat staan dat ik die zou kunnen verwerken in een query. Als iemand mij op weg kan helpen zou dat erg fijn zijn.
 
Ik kan natuurlijk niet in je resultaten kijken en niet zien hoe een en ander is opgebouwd, maar dit soort berekeningen is precies waar een computer voor is gemaakt.

Normaal gesproken doe je dit met de "AND" functie. X AND 1 geeft als uitslag 1 als 1 gezet is en 0 indien niet. Dit werkt onafhankelijk van de grootte van het getal.

75 And 1 = 1
75 And 2 = 2
75 And 4 = 0
75 and 8 = 8
75 and 16 = 0
75 and 32 = 0
75 and 64 = 64
 
SQL kent geen AND function dus dat gaat helaas niet werken voor mij.
 
Ah, met de & in plaats van AND lukt het wel. Dank voor de links.
 
heel simpel, je hebt een commando genaamd SHR (shift right) in je CPU.
In programmeertaal wordt het dan $value>>$position AND 1 :love:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan