Pantoufle_man Force tranquille | cambronne3 a écrit :
Salut, Je suis nouveau dans le C, et je n'ai pas vu de type Booléen, ça commence à int, pour 1 octet. J'ai à manipuler de grandes quantités de BIT, et je souhaiterai déclarer un tableau de bit, pour des raisons de place, comment fait-on ? Merci d'avance
|
un int fait 16 bits, l'octet c'est le type char. si tu veux packer un max de bits dans un minimum de place, il faut masquer. C'est un peu compliqué mais faisable. tu prends un entier de la taille que tu veux, 8bit, 16bit, 32bit ou 64bit, et tu travailles sur chaque bits Exemple
Code :
- char mask=0xF2;/*8bit*/
- int n;
- /*tester le deuxieme bit pour savoir si il est a 1*/
- if( (mask & 0x02) != 0)
- { /*fais des trucs*/ }
- /*alternative pour tester le n-ième bit*/
- n=1;/*2ieme bit*/
- if( (mask & (1<<n)) !=0)
- {}
- /*mettre le n-ieme bit a 1*/
- mask = mask | (1<<n);
- /*ecriture alternative*/
- mask |= 1<<n;
- /*mettre le n-ieme bit a 0*/
- mask = mask & ~(1<<n);
- /*ecriture alternative*/
- mask &= ~(1<<n);
| Message édité par Pantoufle_man le 16-03-2007 à 21:52:20
|