Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1293 connectés 

  FORUM HardWare.fr
  Programmation
  C

  comment manipuler les bits en c (test ou ecrit)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

comment manipuler les bits en c (test ou ecrit)

n°1856688
zack_chips
Posté le 02-03-2009 à 11:56:00  profilanswer
 

bjr,je veux savoir s'il ya une autre maniere de tester un bit que celleci: if(((tab[ret] << (j-1)) & BIT)!=BIT)
je la untilise ici:  
                     ...
                   

Code :
  1. unsigned short int BIT=32768;/*BIT==1000000000000000*/
  2.                      ...     
  3.                      int j=B->info.sk;
  4.                      ret=j/16; j=j % 16;
  5.                      if (j==0){ret--;j=16;}
  6.                      if(((tab[ret] << (j-1)) & BIT)!=BIT)
  7.                      {p=empiler(p,B->g);}


merci je bien vouloir maider
aurevoir

Message cité 1 fois
Message édité par zack_chips le 02-03-2009 à 12:01:48
mood
Publicité
Posté le 02-03-2009 à 11:56:00  profilanswer
 

n°1856719
Un Program​meur
Posté le 02-03-2009 à 14:19:17  profilanswer
 

J'aurais eu tendance a ecrire

Code :
  1. ((tab[ret] >> (15-j)) & 0x01) != 0x01


mais le principe est le meme.  Et il vaut mieux que tab soit des unsigned.
 
(En passant, << par -1 comem tu le fait quand le j initial est un multiple de 16 me semble bizarre).

n°1856885
sligor
Posté le 02-03-2009 à 20:23:03  profilanswer
 

le mieux pour la lisibilité du code est d'utiliser une fonction( inline en c99 si on veut de la performance ou sous forme de macro en C89)

 
Code :
  1. int is_bit_set(int value,int bit_pos)
  2. {
  3.    return value & (1<<bit_pos);
  4. }
  5. [...]
  6. if (is_bit_set(a,i))
  7. {
  8. /*bit set*/
  9. }
  10. else
  11. {
  12. /*bit not set*/
  13. }


Message édité par sligor le 02-03-2009 à 20:23:24
n°1857830
Emmanuel D​elahaye
C is a sharp tool
Posté le 05-03-2009 à 09:41:09  profilanswer
 

zack_chips a écrit :

bjr,je veux savoir s'il ya une autre maniere de tester un bit que celleci: if(((tab[ret] << (j-1)) & BIT)!=BIT)
je la untilise ici:  
                     ...
                   

Code :
  1. unsigned short int BIT=32768;/*BIT==1000000000000000*/
  2.                      ...     
  3.                      int j=B->info.sk;
  4.                      ret=j/16; j=j % 16;
  5.                      if (j==0){ret--;j=16;}
  6.                      if(((tab[ret] << (j-1)) & BIT)!=BIT)
  7.                      {p=empiler(p,B->g);}


merci je bien vouloir maider
aurevoir


On peut cacher la misère avec des macros
 
http://mapage.noos.fr/emdel/bits.htm
 
http://mapage.noos.fr/emdel/clib.htm
Module BITS


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  comment manipuler les bits en c (test ou ecrit)

 

Sujets relatifs
Test type mime d'un fichier envoyé par un input sous IE ne marche pas[PHP] Problème Array : test de valeurs negatives de suite
Problème pattern Decorateur FilterInputStream et classe de test.Test champs base mysql
gcc pour arch 64 bits?Tests unitaires & GTK, quelle librairie de test ? (boost, gunit ...)
Test d'égalité non satisfait avec ifPort parallèle en 64 bits
[HTML/PHP] Test connexion routeurManipuler une BdD (Access ou SQL) en VBS
Plus de sujets relatifs à : comment manipuler les bits en c (test ou ecrit)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR