Gå til innhold

bitshifting long long eller __int64


Anbefalte innlegg

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
Videoannonse
Annonse
  • 2 uker senere...

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...