deadking Skrevet 3. februar 2008 Skrevet 3. februar 2008 Har et problem med 64 bits variable, og det er kanskje noen som kan hjelpe meg: har følgende kode: #define BIT(x) (1 << (x)) #define SETBITS(x,y) ((x) |= (y)) #define CLEARBITS(x,y) ((x) &= (~(y))) #define SETBIT(x,y) SETBITS((x), (BIT((y)))) #define CLEARBIT(x,y) CLEARBITS((x), (BIT((y)))) #define BITSET(x,y) ((x) & (BIT(y))) #define BITCLEAR(x,y) !BITSET((x), (y)) #define BITSSET(x,y) (((x) & (y)) == (y)) #define BITSCLEAR(x,y) (((x) & (y)) == 0) #define BITVAL(x,y) (((x)>>(y)) & 1) unsigned long long testvar = 0 SETBIT(testvar,31); printVar(unsigned long long var) { cout << "binary : "; for (int i=63; i>=0; i--) { cout << BITVAL(var,i) } cout << endl; } for følgende output: binary : 1111111111111111111111111111111110000000000000000000000000000000 noe som ikke er hva jeg vil ha. Har også prøvd med __int64 uten hell. Noen tips? kan også legge til at jeg kjører under windows og bruker VS 2003.
GeirGrusom Skrevet 3. februar 2008 Skrevet 3. februar 2008 Det kan muligens være fordi du definerer i som int istedet for long long.
deadking Skrevet 3. februar 2008 Forfatter Skrevet 3. februar 2008 Det kan muligens være fordi du definerer i som int istedet for long long. er nok ikke det heller. har testet det.
daghf Skrevet 16. februar 2008 Skrevet 16. februar 2008 #define BIT(x) (1 << (x)) Endre denne til #define BIT(x) ((unsigned long long)1 << (x))
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå