Division ??

Signaler
Messages postés
19
Date d'inscription
lundi 3 juin 2002
Statut
Membre
Dernière intervention
26 mai 2003
-
Messages postés
19
Date d'inscription
lundi 3 juin 2002
Statut
Membre
Dernière intervention
26 mai 2003
-
Comment faire un division binaire sous Delphi
sans convertir en hexa ?

Je recherche un algo , decalage de bit ??

Merci

2 réponses

Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
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
Messages postés
19
Date d'inscription
lundi 3 juin 2002
Statut
Membre
Dernière intervention
26 mai 2003

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 !