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
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 non è un tipo del linguaggio C e nemmeno del C++.
Ma è definito in windows.h
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
FrancescoOppure puoi crearti questa macrocodice: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); }
codice:#define BIT(a,b) (a>>b)&1
01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
All errors are undocumented features waiting to be discovered.
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????
codice:#define SETBIT(a,b) a|(1<<b)
Leggi il REGOLAMENTO!
E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
Drugo
Grazie mille.
Scusa habanero ma leggi il regolamento è rivolto a me????
Se si molto probabilmente ho sbagliato in qualcosa....
Cmq ti ringrazio....
Puoi anche leggere questo articolo sulle operazioni bitwise in C.
Può essere utile anche la reset.
codice:#define SETBIT(a,b) (a|(1<<b)) #define RESETBIT(a,b) ((a|(1<<b))^(1<<b))
01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
All errors are undocumented features waiting to be discovered.
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