signed long problem
Jeg er pt. igang med at udvikle et skakspil i Java (ja jeg ved sproget langt fra er optimalt til det, men er nødsaget til at bruge det). Hastighed er altafgørende og derfor bruger jeg så vidt muligt primitive typer... Til at repræsentere boardet bruger jeg 12 bitboards alle af typen long da dette lige præcis passer med 64 bit (antal felter).Der er dog det problem at når jeg opretter boardsne og sætter MSB til til 1 så bliver tallet negativt (da long selvf. er signed) og dette har betydning de andre bits i variablen, jeg benytter meget bitshifting, and, or osv. med bitwise operander. Så vidt jeg kan se er det et overflow der er skyld i det.
Det undre mig da det ikke burde ske med simpel bitshifting at hele variablen vendes (grundet 2 complementær signed notation). Når man slår problemet op på nettet er løsningen at bruge en datatype der er nummeret større, problemet er at jeg allerede bruger long, og ønsker at benytte primitive typer.
Hvis der er nogen der har en løsning på denne, en af javas mange short commings. Ville jeg blive utrolig glad.