Goedemiddag. Voor een algoritme dat ik aan het schrijven ben (in Java), moet ik (redelijk) veel data opslaan en weer snel toegang hebben tot deze data. Ik maak daarvoor een array van int's aan, waarbij de index een Zobrist hash is.
Alleen nu wil ik dus verschillende dingen opslaan in deze array. Namelijk een aantal shorts en een aantal booleans. Via de GoTsearch en google kwam ik op de bitwise operators en op bitmasking, maar echt een hele duidelijk uitleg werd er niet gegeven,
Voor zover ik kan opmaken, kan ik zo verschillende waardes ongeveer op deze manier in een int stoppen. Alleen heb ik geen idee wat ik op de vraagtekens moet invullen. Het heeft iets te maken met het aantal bits dat ze in beslag nemen. Wie kan mij iets meer uitleg geven over bitmasking en hoe deze techniek te gebruiken voor dit doel? En op welke manier kan ik dan deze waardes weer uit de int halen?
edit. okay, 2 shorts gaat niet passen in een int zie ik al, maar het gaat om het principe
Alleen nu wil ik dus verschillende dingen opslaan in deze array. Namelijk een aantal shorts en een aantal booleans. Via de GoTsearch en google kwam ik op de bitwise operators en op bitmasking, maar echt een hele duidelijk uitleg werd er niet gegeven,
code:
1
2
3
4
5
6
7
8
9
10
| int hashkey = (int)(zobrist%HASHSIZE)
if(hashtable[hashkey] == 0) //field is nog leeg
{
hashtable[hashkey] = 0
| (short1 + ??)
| (short2 + ??)
| (flag1 << ??)
| (flag2 << ??)
| (flag3 << ??);
} |
Voor zover ik kan opmaken, kan ik zo verschillende waardes ongeveer op deze manier in een int stoppen. Alleen heb ik geen idee wat ik op de vraagtekens moet invullen. Het heeft iets te maken met het aantal bits dat ze in beslag nemen. Wie kan mij iets meer uitleg geven over bitmasking en hoe deze techniek te gebruiken voor dit doel? En op welke manier kan ik dan deze waardes weer uit de int halen?
edit. okay, 2 shorts gaat niet passen in een int zie ik al, maar het gaat om het principe
[ Voor 4% gewijzigd door BestTested! op 26-03-2007 15:02 ]