[C] utiliser les bits

Fermé
jojo - 13 mai 2008 à 10:52
Tisiph0n3 Messages postés 21 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 15 mai 2014 - 13 mai 2008 à 13:11
Bonjour,

j'aimerais savoir si quelqu'un connait un moyen plus prope de jouer avec des bits:

voilà, j'utilise une fonction get_bit(u_char wsp ,int pos)


if ((get_bit(wsp,8)==0) & (get_bit(wsp,9)==0) & (get_bit(wsp,10)==1) & (get_bit(wsp,11)==0 ))
printf("ok ca marche\n");
else printf("marche pas \n");


j'aimerais utiliser un masque pour réduire la taille de ma condition mais je ne sais pas vraiment comment faire???
A voir également:

3 réponses

d'apres mes souvenirs en C pour faire un masque on fait sa

if (nombre & 0x08 == 0x08)
masque sur le bit 4

if (nombre & 0x09 == 0x09)
masque sur le bit 1 et 4

il me semble
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
13 mai 2008 à 12:55
tu peux faire un masque grace à l'opérateur '&'.
if( !(wsp&0b0000000111100000) ) printf("ok");else printf("pasok");
en supposant que wsp soit coder sur 16 bits. Je n'ai pas testé, mais dans l'esprit c'est ça.
le '&' fait un ET logique bit à bit.
ou peut être :
if( !(wsp&(pow(2,8)+pow(2,9)+pow(2,10)+pow(2,11))) ) printf("ok");else printf("pasok"); en unsigned
0
Tisiph0n3 Messages postés 21 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 15 mai 2014
13 mai 2008 à 13:11
Si tu veux tester la valeur d'un bit:

if ((Conteneur & valeur de bit) == valeur de bit)

Pour assigner une valeur a un bit

conteneur |= valeur de bit;

Voila en esperant que ça t'aide ;)
0