[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [linux] Re: Manipuler un bit en c
Jean-Francois Dive wrote:
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
ce type d'opération est très utile en programmation
graphique(manipulation de pixels).
Par exemple avec la SDL les pixels d'une image sont stoqués dans un tableau
à une dimension, si cette image est codée en 16bit, chaque pixel sera un
Uint16 (pas de pixel négatif bien entendu). Dans ces 16 bits, il faut
répartir les 3 couleurs de base rgb. Mais 16/3= 5.333... d'où le rouge
est codé sur 5bits, le verts sur 6 et le bleu sur 5.
Dans ce cas comment récupérer la couleur verte du pixel n?
Il faut récupérer la valeur du pixel n (un Uint16 donc), masquer le
rouge et le bleu (mettre des 0 à la place quoi) et décaler le résultat
de 5 bits vers la droite.
g = ( mon_pixel & 0x00000FFFFFF00000 )>>5;
comme d'hab hein, si je dis des bêtises, vous le dites.
--
_
( "> 1 Sgt System
(v ) Thomas Administrator
--- Silvestre 22 Log. Wing ASYU
_______________________________________________
Linux Mailing List
Archives: http://unixtech.be/mailman/listinfo/linux