bonjour tout le monde.
bon, je ne sais pas trop ou le poster, alors je le mets ici.
Voila, comme en cours on nous fait faire des fonction pour multiplier des nombres et qu'on fait plein de boucle, je me suis demandé si il n'étais pas possible d'aller plus vite que par ce "traitement unaire" (j'ai déjà fait mon propre jargon :p )
Bref, j'ai fait deux fonction en C, et je ne sais pas trop si ça a déjà été fait, alors je vous les donnes ici.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
int multiplie (int x, int y)
{
int result = 0;
while (y != 0)
{
if (y & 0x1 == 1) result += x;
y >>= 1;
x <<= 1;
}
return result;
}
int puissance (int x, int y)
{
long result = 1;
while (y != 0)
{
if (y & 0x1 == 1) result *= x;
x *= x;
y >>= 1;
}
return result;
} |
bon, je sais que la suivante utilise des multiplications usuelles, mais je peux changer ça.
Je suis quasi sur de ne pas être le premier a y penser mais sait-on jamais.
En tout cas, je les place en open source, puiss-t-il cela aider quelqu'un.
P.S : je suis en L1, mais je sais tout le programme et plus, alors je me pose plein de question pendant les cours :p (entre deux sieste, et avant d'aider les autres ^^)
Bref, désolé de vous avoir dérangé pour rien si cela est déjà connu.
(je peux vous faire l'addition et la soustraction aussi, mais pour la division... je sèche :p )
Partager