J'ai un petit problème je n'arrive plus à retrouver la syntaxe pour réaliser la rotation à droite ou à gauche sur un octet ou sur un mot !
Merci de ne pas m'en vouloir d'avoir un problème de mémoire !

Code : Tout sélectionner
Rouge=128
Bleu=255
Vert=255
Couleur = Bleu << 16 | Vert << 8 | Rouge
Debug Hex(Couleur)
Debug Hex(RGB(Rouge,Vert,Bleu))
Code : Tout sélectionner
AlphaB=255-trans
AlphaA=trans
;Valeur exacte
;CouleurC = (alphaB couleurB + (((255 - alphaB) alphaA CouleurA)/255))/255
;Plus rapide mais moins exacte
;CouleurC = (alphaB couleurB + (((255 - alphaB) alphaA CouleurA)>>8)) >>8
Code : Tout sélectionner
a = %00010000000000000000000000000000
Debug Bin(a)
b = a << 3
Debug Bin(b)
c = b >> 3
Debug Bin(c)
Code : Tout sélectionner
a = %00010000000000000000000000000000
Debug Bin(a)
b = a << 2
Debug Bin(b)
c = b >> 2
Debug Bin(c)
Code : Tout sélectionner
a = %00010000000000000000000000000000
Debug Bin(a)
b = a << 3
Debug Bin(b)
c = (b >> 3) & a
Debug Bin(c)
Code : Tout sélectionner
Procedure MakeLong(low.w, high.w); - Combines the high and low word to a long
ProcedureReturn low + (high<<16)
EndProcedure
Procedure LowWord(long); - Get the low word of a long
ProcedureReturn long&$FFFF
EndProcedure
Procedure HighWord(long); - Get the high word of a long
ProcedureReturn (long>>16)&$FFFF
EndProcedure
Val1 = 40
Val2 = 180
ValLong = MakeLong(Val1, Val2) : Debug ValLong
LowVal = LowWord(ValLong) : Debug LowVal
HighVal = HighWord(ValLong) : Debug HighVal
J'avais déjà montré ça et encore mieux , 3 valeurs dans une seuleChris a écrit :Et ça sert aussi à stocker deux valeurs dans une seule, ou à les récupérer.
Code : Tout sélectionner
Rouge=128
Bleu=255
Vert=255
Couleur = Bleu << 16 | Vert << 8 | Rouge
Debug Hex(Couleur)
Debug Hex(RGB(Rouge,Vert,Bleu))
Code : Tout sélectionner
Rouge=128
Vert=134
Bleu=217
Couleur = Bleu << 16 | Vert << 8 | Rouge
Debug Hex(Couleur)
Debug Hex(RGB(Rouge,Vert,Bleu))
;Efface les composantes
Rouge = 0 : Vert = 0 : Bleu = 0
;Récupère les composantes
Rouge = Couleur & $000000FF
Vert = (Couleur & $0000FF00) >> 8
Bleu = (Couleur & $00FF0000) >> 16
Debug Rouge
Debug Vert
Debug Bleu