deadking Skrevet 3. februar 2008 Del 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. Lenke til kommentar
GeirGrusom Skrevet 3. februar 2008 Del Skrevet 3. februar 2008 Det kan muligens være fordi du definerer i som int istedet for long long. Lenke til kommentar
deadking Skrevet 3. februar 2008 Forfatter Del 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. Lenke til kommentar
daghf Skrevet 16. februar 2008 Del Skrevet 16. februar 2008 #define BIT(x) (1 << (x)) Endre denne til #define BIT(x) ((unsigned long long)1 << (x)) Lenke til kommentar
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å