oui, enfin, la manipulation de bit se fait la plupart du temps avec des operations logiques et un masque. exmple: uint8_t a = 1; ( bin= 0000 0001) uint8_t b = a | 0x10; (bin 0000 0001 OR 0001 0000 = 0001 0001) Dont, tu applique un masque avec OR pour setter un bit, et un AND pour clearer un bit (tu AND avec 0 dans le masque). JeF On Wed, Mar 13, 2002 at 12:55:09AM +0100, Benoit Joseph wrote: > > Tu dois définir des structures avec des champs de bits. genre > > struct One_by_One { > a:1; > b:1; > c:1; > d:1; > e:1; > f:1; > g:1; > h:1; > }; > > struct Octet { > octet:8; > } > > Si tu veux faire référence parfois à l'un parfois à l'autre, il faut que > tu fasse une union de ces deux structures. > > union { > struct Octet o; > struct One_by_One b; > } plok; > > un appel au premier bit serait plok.b.a > > ou quelque chose dans le goût enfin... Tu peux aussi jouer avec des > typedef pour faire joli... > > A+ > > Benoit > > PS: je ne garantis pas la syntaxe, mais l'idée y est. ;-) > > On Wed, Mar 13, 2002 at 12:34:36AM, Benoît Barbier wrote: > > Bonjour, > > > > Désolé pour le hors-sujet. > > Je voudrais savoir comment on peut manipuler un bit particulier d'un octet en c > > Par ex. : > > int test=0; > > //Positionner le 3ème bit de poids faible à 1 > > printf ("\n\nLa val du nb : %d après inversion du 3eme bit \n\n", test); > > //Et il m'afficherait 4. > > Ce serait pour faire des catégories par ex. > > Un peut comme les droits d'accès sous linux un bit pour (en partant du poids faible) : > > l'exécution, l'écriture, la lecture. > > Y a-t-il moyen? > > Comment fait-on? > > > > Merci d'avance > > Benoît > > > > > > > > _______________________________________________ > > Linux Mailing List > > Archives: http://unixtech.be/mailman/listinfo/linux > ---end quoted text--- > > -- > > Benoit JOSEPH > Manex SPRL: benoit.joseph@manex.be > Perso: joker@baby-linux.net > benoit.joseph@teledisnet.be -- -> Jean-Francois Dive --> jef@linuxbe.org
Attachment:
pgp01003.pgp
Description: PGP signature