Comment un pc fait des multiplications...

Contenu du snippet

Un tout petit code qui montre comment un PC fait une multiplication.
Je sais dans la fonction j'emploie la multiplication, mais en fait ce ne sont que des multiplications par 2, ce qui revient a decaler d'1 bit vers la gauche (et diviser par 2 revient a decaler d un bit vers la droite...).

D ailleurs la fonction mult2 fait la meme chose mais uniquement en employant
les operateurs << et >>.

Pour l addtion elle est definie egalement de facon recursive par le processeur
mais pour pouvoir le retranscrire en C il faut avoir en entree un tableau en base
2...

Source / Exemple :


unsigned int mult(unsigned int a, unsigned int b)
{
	if(b==1) return a;
	if(b%2) return mult(2*a,(b-1)/2) + a;
	else return mult(2*a,b/2);
}

unsigned int mult2(unsigned int a, unsigned int b)
{
	if(b==1) return a;
	if(b%2) return mult(a<<1,b>>1) + a;
	else return mult(a<<1,b>>1);
}

Conclusion :


Il faut remarquer que ces fonctions sont surement beaucoup plus lentes que l operateur "*" car celui ci se traduit par une seule instruction assembleur, mais il effectue bien le meme travail.
De plus la definition recursive est correcte (prouvee en DS d info...).

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.