1

Je cherche depuis quelques heures sur internet différents algorithme de Multiplication/Division signée, mais je n'ai pas abouti à grand chose, à part un dénommé Booth.
Ce que je cherche c'est des algorithmes rapides, et constants en vitesse d'éxecution. J'en ai déjà un pour la multiplication (non signée) de deux registres de 8 bits, avec un résultat stocké dans un registre de 16 bits, qui ne dépend pas des entiers à multiplier.
Mais j'ai besoin d'utiliser des nombres signés... Sachant que pour l'instant je fais des détections de signes "à la main".

Ps. Je suis sur z80, alors pas la peine de répondre " et les instructions imul et idiv tu connais?"... Merci smile
[ Come take us out of here / take us anywhere... oh yeah ]

2

C'est pas dur confus

Tu testes le signe de la première opérandes et de la deuxième, si l'une est négative alors le résultat sera négatif, si les deux sont négatives OU positives alors le résultat sera positif.
Après avoir testé les opérandes, tu fais une négation sur celles qui sont négatives de façon à ce que tout soit positif pour les calculs.
A la fin du calcul, tu changes le signe du résultat en fonction des tests que tu avais fait au départ.

En codant de façon optimisée ma méthode, on peut faire un truc très rapide.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

3

T'as lu tout mon post ou pas? roll
C'est la méthode que j'utilisais, c'est cool, c'est simple mais je voulais savoir s'il n'y avait pas un algorithme "bit-à-bit" qui ne nécessite pas de tests au départ, un algorithme qui gère les entiers signés, and voilà! smile
[ Come take us out of here / take us anywhere... oh yeah ]

4

Là je ne peux pas te répondre wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

5

pour autant que je sache, il n'y a pas de différence entre les deux, non ? c'est pour la division qu'il faut faire attention. Pour la multiplication, il me semble que ça passe sans problème - c'est même très logique, que ça passe, puisque tout est définit modulo 2^n... -
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

6

Pas si on fait de la multiplication 8 bits * 8 bits -> 16 bits:
yhean
a écrit : de deux registres de 8 bits, avec un résultat stocké dans un registre de 16 bits

avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

7

c'est vrai roll, j'ai oublié qu'on changeait de modulo entre temps...
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

8

Il n'a alors qu'à étendre les deux opérandes sur 16 bits avant de commencer confus
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

9

A la limite, là, il faut voir sur le nombre de cycles, je pense...
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

10

Et les instructions imul et idiv, tu connais ? rotfl
avatar
I'm on a boat motherfucker, don't you ever forget