une puissance de 2.
Pour une implémentation simple, probablement la moitié de la taille d'un mot sur votre machine, de sorte que vous pouvez multiplier deux chiffres sans trop-plein. Donc 65536 ou 4294967296. Ou peut-être la moitié de la taille du plus grand type entier, pour la même raison, mais peut-être une meilleure performance sur tous.
Mais je n'ai jamais réellement implémenté une telle bibliothèque: si vous utilisez les algorithmes les plus connus, alors vous ne ferez pas de longue multiplication en style scolaire. La multiplication de Karatsuba (et toutes les autres astuces intelligentes que vous utiliserez) gagnerait à être faite dans un entier qui est plus de deux fois la taille des chiffres, je ne sais vraiment pas comment la performance fonctionne. Si c'est le cas, il vaut mieux utiliser l'arithmétique 256 et 32 bits, ou l'arithmétique 65536 et 64 bits.
Dans tous les cas, si votre représentation est binaire, vous pouvez sélectionner et choisir des bases plus puissantes de deux bases pour chaque opération. Par exemple, vous pouvez traiter les données comme base 2^16 pour la multiplication, mais base 2^32 pour l'addition. C'est la même chose à condition de faire attention à l'endianité. Je commencerais probablement par la base 2^16 (puisque cela me force à commencer par l'endian-ness, alors que 2^8 ne le feraient pas), et je vois comment j'arrive - comme chaque opération est optimisée, une partie de l'optimisation consiste à identifier la meilleure base.
L'utilisation d'une taille qui n'est pas un multiple d'octets est une possibilité, mais vous devez utiliser la même base pour tout, car il y a des bits inutilisés dans le stockage à des endroits spécifiques en fonction de la base.
Merci pour l'information. La performance est certainement une préoccupation, donc je vais coller à la moitié de la taille du mot. Mon seul autre problème est que la taille des mots peut varier d'une machine à l'autre. Le professeur/niveleuse/etc. utiliseront toutes des machines différentes, donc je veux garder à l'esprit la portabilité (y compris l'endianness). – snap