par Ben314 » 11 Juin 2010, 10:38
Pour ce qui est des ordinateurs, je pense que l'on continue (pour des entiers codés de façon usuelle) à procéder "au fond" par décalage.
Les premiers processeurs (par exemple le 6502 de l'Apple II) ne comportait aucune instruction de multiplication, même entière.
Il seulement ajouter/soustraire des entiers stockés sur 8 bits (avec ajout éventuel d'une retenue et calcul de la retenue liée à l'opération) et, pour les multiplication, on utilisait les instructions de décalage (shift en anglais) qui permettent de décaler les chiffres (en base 2) d'un nombre donné.
A cette époque, on devait donc programmer l'algo produisant des multiplications entières et, évidement, on procédait par décalage/ajout vu qu'en base 2, la table de multiplication est triviale.
Sur les processeurs suivant sont apparue des instruction de multiplication entières (sur 8 ou 16 bits, puis sur 32 bits) puis ont été intégrés dans le même boitier du processeur des "coprocesseur de calculs" qui permettent de faire du calculs (somme, produit, log, exp, trigo,...) sur des nombres dit "réels" sans avoir besoin d'implémenter sois même les algos de calculs.
Ces même coprocessseurs permettent aussi de manipuler directement des entiers de "grande taille" (mini 64 bits dés les premières machines à copro.)
Je ne sais pas comment sont implémentés "en hardware" les multiplications entières, mais je serait trés surpris que la méthode soit différente.
Les processeurs actuels continues néanmoins à avoir des instructions de décalage qui servent trés trés fréquement. De plus, a mon avis, tout les compilateur "codent" une instruction de multiplication par 2, 4 8 ou 16 directement par une instruction de décalage.
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius