[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. 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
    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. 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