[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???
Configuration: Linux Fedora
Firefox 3.0

3 réponses

  1. 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
    1. Contributeur
      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
      1. 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