PDA

Visualizza la versione completa : [C] Conoscere lo stato dei bit che compongono un byte


francescoprogc
25-10-2007, 12:47
Ciao a tutti,
ho come al solito un problema...
Avendo una variabile di tipo BYTE come faccio a conoscere il valore del bit i-esimo con i compreso tra 0 e 7???
Grazie a tutti per le risposta.
Saluti
Francesco

MacApp
25-10-2007, 12:55
BYTE non un tipo del linguaggio C e nemmeno del C++.

francescoprogc
25-10-2007, 13:04
Ma definito in windows.h

Samuele_70
25-10-2007, 13:44
Originariamente inviato da francescoprogc
Ciao a tutti,
ho come al solito un problema...
Avendo una variabile di tipo BYTE come faccio a conoscere il valore del bit i-esimo con i compreso tra 0 e 7???
Grazie a tutti per le risposta.
Saluti
Francesco



BYTE byte;
short bitnum;
for( byte=0; byte<20; byte++)
{
printf("\n%03d = ", byte);
for( bitnum=7; bitnum>=0; bitnum--)
printf("%d ", (byte>>bitnum) & 1);
}

Oppure puoi crearti questa macro


#define BIT(a,b) (a>>b)&1

francescoprogc
25-10-2007, 14:10
Grazie mille sei stato gentilissimo...
Se volessi fare il contrario invece come dovrei fare????
Ovvero partire da otto bit e settare il valore di un BYTE????

Habanero
25-10-2007, 14:16
#define SETBIT(a,b) a|(1<<b)

francescoprogc
25-10-2007, 14:18
Grazie mille.
Scusa habanero ma leggi il regolamento rivolto a me????
Se si molto probabilmente ho sbagliato in qualcosa....
Cmq ti ringrazio....

pallinopinco
25-10-2007, 14:22
Puoi anche leggere questo articolo sulle operazioni bitwise in C. (http://www.gamedev.net/reference/articles/article1563.asp)

Samuele_70
25-10-2007, 14:34
Pu essere utile anche la reset.



#define SETBIT(a,b) (a|(1<<b))
#define RESETBIT(a,b) ((a|(1<<b))^(1<<b))

francescoprogc
25-10-2007, 15:28
BYTE Buffer;
Buffer=8;
for(i=0;i<8;i++)
{
printf("BIT%d=%d \n",i,BIT(Buffer,i));
}
for(i=0;i<8;i++)
{
SETBIT(Buffer,i);
}
for(i=0;i<8;i++)
{
printf("BIT%d=%d \n",i,BIT(Buffer,i));
}
for(i=0;i<8;i++)
{
RESETBIT(Buffer,i);
}
for(i=0;i<8;i++)
{
printf("BIT%d=%d \n",i,BIT(Buffer,i));
}
Come mai la stampa effettuata nei vari cicli for mi restituisce sempre lo stesso risultato????
I vari BIT costituenti il buffer non vengono settati o resettati???
Grazie a tutti

Loading