Bjr,
Je suis debutant en assembleur, je voudrais connaitre l'algo pour faire des divisions avec un diviseur non multiple de 2, en utilisant les decalages.
Merci de votre aidre.
Bjr,
Je suis debutant en assembleur, je voudrais connaitre l'algo pour faire des divisions avec un diviseur non multiple de 2, en utilisant les decalages.
Merci de votre aidre.
Tu ne peux pas faire de division directement par 5 avec les décalages ; soit tu divises par 4 puis une autre division soit utiliser une instruction spécifique DIV
après ca dépend de la précision qu'on veut, l'optimization classique de la division entière c'est la multiplication/décalage. on multiplie par un entier, représentant un fraction du décalage, exemple si le décalage est 1024 = 10bit, alors on a notre m=1024/diviseur. dans notre cas m=1024/5 = 204Envoyé par mat.M
Donc la division par 5 peut se coder par un multiplication entière (par 'm'=204) et un décalage (ici >>10).
Pour la beauté de la chose, on peut trouver des méthode de division par 5 par décalage uniquement.
Exemple : on remarque que A/5 = A/4 - A/20
or A/20 = A/(4*5) = (A/4)/5... la récursion s'impose :-)
évidemment on peut faire une version itérative...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 long dividBy5(long value) { if (value<5) return 0; value=value>>2; return value-dividBy5(value); }
Salut,
c'est juste pour dire une débilité: si on fait un décalage d'un chiffre sur un nombre en base 2, ça équivaut à une division par 2, en base 10 à une division par 10 donc fait un décalage d'un chiffre avec un nombre écrit en base 5.
P.S: j'avai prévenu![]()
>>vburel
Oui mais fdiv ,idiv c'est peut-être tout aussi bien.......
>>gege2061
comment fais-tu pour passer en base 5 ?
ben , faut savoir ce qu'on veut, utiliser du DIV ou pas ?... En parlant de cela, il me semble avoir vu que le DIV ou IDIV sur Pentium4 passe dorénavant par le FPU ! ce qui est très bète je trouve... qqn confirme ca !?Envoyé par mat.M
J'ai fais ma part tu boulot, maintenant je vous laisse vous débrouillerEnvoyé par mat.M
![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager