[C] utiliser les bits

jojo -  
Tisiph0n3 Messages postés 21 Statut Membre -
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. Youplaboum
     
    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
  2. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    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
  3. Tisiph0n3 Messages postés 21 Statut Membre
     
    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