Decaler l'encodage d'un bmp

Description

On ouvre une fichier BMP 24 bits avec une classe coder par Kirua qui m'a genereusement offert lol. Et avec une classe DecalBit Apres avoir lu le header et mis le codage des pixels dans un tableau decaler les bits un a un a gauche ou a droite de N bit.
<<
>>
Nous ne fesons pas que decaler nous recuperons les bits de poids faible pour les remettres de l'autre coter sinon nous aurons une perte de donner et impossible de recuperer les informations de bases :

Source / Exemple :


// Exemple de decalage de bit a droite avec un octet c et du k:
    f = c & ((1 << k) - 1); // Nous recuperons les bits de poids faibles
    c >>= k; // Decalons l'octet de k
    f <<= (8 - k); // Decalons le bit de poids faible de l'autre coté
    c |= f; // Et avec un ou l'ogique nous "melangons" les 2

Conclusion :


Exemple avec l'octet :
1001 1010
Decalage de 2 a droites
Explication
Un decalage a gauche est une multiplication donc 1 << k equivaut a 2^k
1 << k = 0000 0100
(1 << k) - 1 = 0000 0011
Alors le bit de poids faible est :
1001 1010 = c
& 0000 0011 = ((1 << k) - 1)
___________
0000 0010 = f

Decalons notre octet de base a droite de 2
1001 1010 >> 2 = 0010 0110 = c
f <<= (8 - k) <=> f <<= (8 - 2) <=> f <<= 6
f <<= 6 <=> f = 1000 0000
0010 0110
| 1000 0000
___________
1010 0110

Voilà notre bit decaler :p

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.