[C] utiliser les bits
jojo
-
Tisiph0n3 Messages postés 21 Statut Membre -
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???
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
-
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 -
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 -
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 ;)