Bonjour,
Existe t-il une fonction en Delphi permettant d'effectuer une rotation sur un bit ?
Merci.
Version imprimable
Bonjour,
Existe t-il une fonction en Delphi permettant d'effectuer une rotation sur un bit ?
Merci.
shr ou shl?
Avec shr et shl, les bits sortant sont perdus, ce dont j'aurai besoin serait plutôt que les bits sortants se retrouve de l'autre coté, comme un ROL en assembleur.
Voir ce sujet Delphi et assembleur, j'ai proposé ceci
Pourquoi EAX, il faut lire la Convention d'Appel Register (__fastcall en BCB)Code:
1
2
3
4 function RotateLeft(Value: Longword): Longword; asm ROL EAX, 1 end;
ça me parait une très bonne solution merci, ça fonctionne si on fait ça avec une variable de type byte ? Par exemple si je l'adapte comme ça :
Citation:
function RotateLeft(Value: byte): byte;
asm
ROL EAX, 1
end;
Pas la peine de répondre, j'ai fais un test ça fonctionne très bien.
Encore merci.
Théoriquement, pour rester propre, il faut utiliser la bonne partie du registre
Je dirais même que c'est suprenant que tu es eu un bon résultat !
En théorie, si je ne me trompe pasCode:
1
2
3
4 function RotateLeftByte(Value: Byte): Byte; asm ROL AL, 1 end;
10000001 (129) -> ROL AL -> 00000011 (3)
10000001 (129) -> ROL EAX -> 00000000 00000000 00000001 00000010 (258) -> Byte -> 00000010 (2)
Tu as raison en effet, avec AEX les bits de gauche sont perdus, AL règle le problème.