La méthode des opérations logiques est la plus classique. Se que tu explique est tout a fait correcte, mais uniquement pour déclarer des structures avec des champs de bits (utilisés typiquement pour déclarer des structures de packets, etc..). Une explication plus générale. Euuh ben je dois dire que ca pourrais prendre trop de place sur un email. Le plus simple a mon avis, c'est que tu relook une explication générale des mathématique booléenne, tout deviendra très clair. Ensuite, il faut trouver une explication sur les math booléennes en C pour la notation, pas trop compliqué, il faut juste connaitre les opéarateurs: & (AND), | (OR), >> << (shift), etc. etC.. JeF On Wed, Mar 13, 2002 at 04:13:50PM +0100, Benoit Joseph wrote: > > Je veux bien une explication un peu plus complète. J'ai toujours > manipuler mes bits comme ça. Qu'est ce que ta méthode apporte? Je ne > connaissais pas. > > Ben > > On Wed, Mar 13, 2002 at 02:44:16PM, Jean-Francois Dive wrote: > > 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 > > > ---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:
pgp01000.pgp
Description: PGP signature