64bit bitboard met binaire operatoren, shifts en snelle geheugenallocatie

Status
Niet open voor verdere reacties.

tom dierickx

Nieuwe gebruiker
Lid geworden
25 jun 2008
Berichten
3
Beste

Ik heb plannen gemaakt om een applicatie te programmeren in cpp. In dit programma wens ik gebruik te maken van 64bit bitboards. Op deze bitboards zullen dan tal van binaire operaties losgelaten worden.

Ik zoek een idee voor de implementatie van deze bitboards. Ik heb al 2 alternatieven bedacht, maar deze hebben beiden een groot gebrek. Ik vermeld ze hier toch even:


a) Gebruik van een signed long. Volgens de cpp normen bestaat deze slechts uit 4 bytes. Te klein dus voor mijn probleem. In java bestaat een long uit 8 bytes...

b) een struct met 64 booleanwaarden waarbij in de typedeclaratie slechts 1 bit per boolean wordt toegekend. Op dit datatype kan ik geen shift operatie toepassen... een essentiele voorwaarde. Zelf indien dit mogelijk was, heb ik bij dit type nog geen controle over de geheugenlocatie van de verschillende velden van de struct. Ik kan wel aannemen dat ze gerangschikt staat volgens de volgorde waarin ze in mijn broncode staan, maar dat geeft toch niet genoeg garanties.

Kortom: Ik zoek een andere oplossing.
De vereisten zijn:
* 64 bit
* shiftoperaties zijn mogelijk (bij een rightshift moet een 0 worden ingeschoven)
* binaire and, or, xor....
* kennis over de rangschikking van de bits, opdat ik mijn shifts goed kan ontwerpen.
* (zeer) snel schrijfbaar en leesbaar

Suggesties zijn welkom

Alvast bedankt!
Tom Dierickx
 
Laatst bewerkt:
Re:

Na veel zoekwerk heb ik uiteindelijk het antwoord zelf gevonden.

Er bestaat blijkbaar zoiets als een long-long-int. Dit is een integer met 8 bytes als opslagcapaciteit. Volgens de norm is dit gegevenstype enkel implementeerbaar in C, maar wegens het enorme succes introduceren vele producenten van compilers dit gegevenstype ook voor C++. De overdraagbaarheid van de code wordt dan wel meer beperkt, maar we kunnen al op weg. Wegens het enorme succes zou de overdraagbaarheid misschien toch vrij ruim zijn. Misschien is het interessant om dit eens na te gaan. Ik gebruik dev-cpp, en met dit programma is dit gegevenstype toepasbaar.

In de meest gebruikelijke 32bit architectuur, zal dit type wel trager werken, maar het alternatief was ook niet echt veelbelovend.Uitkijken dus naar mn eerste 64bit pc. En ondertussen blijven programmeren!

Bedankt aan allen die toch moeite gestoken hebben in mijn vraag.
Tom Dierickx
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan