[C] utiliser les bits
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???
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???
Configuration: Linux Fedora Firefox 3.0
3 réponses
-
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 ;) -
Contributeurtu 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 -
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