[ALG] Bitmasking, verschillende primitieven in een int

Pagina: 1
Acties:

  • BestTested!
  • Registratie: Oktober 2003
  • Laatst online: 01-12 17:31
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,

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 ]


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Gisteren nog besproken: [ALG] toepassing bitwise operators,bitshifting en bitset? , staat ook een voorbeeld in met bit shifting. :)

{signature}


  • BestTested!
  • Registratie: Oktober 2003
  • Laatst online: 01-12 17:31
Voutloos schreef op maandag 26 maart 2007 @ 14:55:
Gisteren nog besproken: [ALG] toepassing bitwise operators,bitshifting en bitset? , staat ook een voorbeeld in met bit shifting. :)
iig excuses. Misschien net een verkeerde combinatie van zoektermen gebruikt, maar deze kwam bij mij niet naar voren in de search.

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
offtopic:
De search wordt 's nachts bijgewerkt. Dat topic is dan wel net oud genoeg, maar eigenlijk kan het nooit kwaad om even snel de active topics van het subforum te bekijken.

{signature}


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 21-11 11:06

Macros

I'm watching...

Java:
1
2
3
4
hashtable[hashkey] = (short1 << 16) | (short2 + ??);
int hash = hashtable[hashkey];
short1 = hash >> 16;
short2 = hash & 0xFFFF;

"Beauty is the ultimate defence against complexity." David Gelernter