Division ??

cs_Manu93 Messages postés 19 Date d'inscription lundi 3 juin 2002 Statut Membre Dernière intervention 26 mai 2003 - 5 juin 2002 à 03:27
cs_Manu93 Messages postés 19 Date d'inscription lundi 3 juin 2002 Statut Membre Dernière intervention 26 mai 2003 - 5 juin 2002 à 13:57
Comment faire un division binaire sous Delphi
sans convertir en hexa ?

Je recherche un algo , decalage de bit ??

Merci

2 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
5 juin 2002 à 06:32
Pour les décalages de bits, il y a les opérateurs SHL pour celà;
Exemple, pour multiplier 10 par deux :
10 SHL 1;
C'est à dire décaler les bits d'un rang vers la gauche;
Pour diviser par deux (ce qui revient à utiliser l'opérateur DIV) :
10 SHR 1;
est strictement équivalent à 10 DIV 2.
Extrait de l'aide en ligne de Delphi :
"Les opérations x shl y et x shr y décalent la valeur x vers la gauche ou vers la droite de y bits, ce qui revient à multiplier ou à diviser x par 2^y ; le résultat est du même type que x. Si, par exemple, N contient la valeur 01101 (13 en décimal), alors N shl 1 renvoie 11010 (26 en décimal)."

Il faut donc faire très attention au risque de bug comme par exemple dans :
Maxint shl 1;
Quel est le résultat à ton avis ?
La réponse est la suivante :
ShowMessage(IntToStr(Maxint shl 1));

Etonnant, non ?

May Delphi be with you.
Delphi advanced
0
cs_Manu93 Messages postés 19 Date d'inscription lundi 3 juin 2002 Statut Membre Dernière intervention 26 mai 2003
5 juin 2002 à 13:57
OKay pour SHR et SHL, pas de problemes

Mais cela ne permet pas de faire par exemple :
10100000 / 1001

Pas de decalage possible ?
Je recherche a avoir les calculs intermediaires
Exactement comme si je le faisait a la main.
10100000 |1001
1001 |10001
------ |
00010000 |
1001 |
------- |
0111

Resultat 10001 reste 111

Voyez vous !
0
Rejoignez-nous