21. november 2004 - 13:32
Der er
6 kommentarer og 1 løsning
Bitwise operations på 24+ bit
Jeg er ved at optimere en AI algoritme, hvori jeg udfolder situationer indtil at jeg finder en løsning. Situationen består af 4 brikker der er placeret på et board med 64 felter. Jeg vil derfor gerne beskrive min situation på så lidt plads som muligt, og derfor vil jeg bruge 6 bit til hver brik. (4*6bit=24bit=3bytes) Problemet er blot hvorledes opererer jeg lettest med dette. Jeg havde forestillet mig at situationen skulle være: char sit[3]; Men jeg kan ikke operere bitvist på alle 24 bits på engang. Ihvertfald ikke så længe situationen er baseret på chars. Hvad gør en klog?!? Skal jeg bruge en anden datatype?!?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
21. november 2004 - 14:00
#1
Så vidt jeg kan se så er dine muligheder: 1) array af char og funktioner til at håndtere bit manipulationen 2) vælge en 32 bit integer og leve med at spilde en byte 3) en packed bit struct
21. november 2004 - 14:06
#2
Desværre er angivelse af at en struct skal være packed ikke standard. I GCC kan man skrive: struct bf { __attribute__((packed))unsigned char b1 : 6; __attribute__((packed))unsigned char b2 : 6; __attribute__((packed))unsigned char b3 : 6; __attribute__((packed))unsigned char b4 : 6; };
21. november 2004 - 14:19
#3
Hm. Det er vist værre endnu. Mange compilere kan vist slet ikke pakke bit felter på den måde.
21. november 2004 - 15:48
#4
Jeg kunne bruge en unsigned int(32 bit) og gemme den i et array af 3 chars ved memcpy kald?
21. november 2004 - 15:55
#5
Det kunne du også.
21. november 2004 - 16:01
#6
Tak for hjælpen.
12. december 2004 - 20:13
#7
OK ?
Kurser inden for grundlæggende programmering