Le langage SMS est exclu sur les forums ProgBoards, tout message ne respectant pas la charte sera déplacé, modifié, ou supprimé par nos modérateurs.

Forum Langages » C & Cie. » Nombres sur 2048 bits...

kod128
ProgBoarder
Citer Windows XP Firefox - Posté le 09/09/2006 à 23:43
Existe-t-il un moyen simple et optimisé de manipuler des nombres de 256 octets (2^2048 maximum donc). J'ai juste besoin de faire les opérations +, -, /, *. Il me les faudrais le plus optimisé possible, et le plus petit possible (niveau taille du code). C'est ultra important.

Merci d'avance.
Francesco
Modérateur
RemonterCiter Linux Firefox - Posté le 10/09/2006 à 01:22
Les nombres que tu souhaite manipuler se sont des entiers ? signé ou non ?

Si oui, l'addition et la soustraction ne pose pas trop de problème, la multiplication un peu plus corriace, sans parler de la bête noire qu'est la division.

Pour l'optimisation, les instructions MMX me paraissent difficilement utilisables.

En quel langage aussi ? C ? C++ ? autre ?
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
kod128
ProgBoarder
RemonterCiter Windows XP Firefox - Posté le 10/09/2006 à 10:47
Je pense l'utiliser en C. Sinon ce sont des entiers non signés que je manipulerais.
Francesco
Modérateur
RemonterCiter Linux Firefox - Posté le 10/09/2006 à 13:55
je viens de voir relire tes exigences, plus petits possibles. En assembleur, ce serait le mieux, pour les additions et les soustractions, (intructions ADC 'Add With Carry', et SBS 'Substract with Borrow').

Enfin, bien sur, si les instructions en asm sont autorisés, et à condition que le code ne soit que pour une architecture précise, car le code ne sera alors plus portable...

Edité par Francesco ( 10/09/2006 13:57:28 )
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
kod128
ProgBoarder
RemonterCiter Windows XP Firefox - Posté le 10/09/2006 à 19:53
Malheureusement je ne m'y connais pas beaucoup en asm x86 (j'ai juste quelques bases). L'architecture sera que du x86 donc pas de problème de portabilitée.

Je vais faire quelques recherches. (clein d'oeil)

Pour la multiplication, je pense avoire ma petite idée : avec des décalages de bits.
Freem
Modérateur
RemonterCiter Windows XP Firefox - Posté le 16/09/2006 à 15:31
Ce truc ne fonctionne que dans le cas des multiples de deux....
Il va falloir que tu trouves autre chose pour les autres cas.
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. - Benjamin Franklin
Poly Progr@ms
Guest Star
RemonterCiter Linux Firefox - Posté le 16/09/2006 à 22:33
Multiple ou puissance de 2 ?
Freem
Modérateur
RemonterCiter Windows XP Firefox - Posté le 22/09/2006 à 17:53
Puissances de deux... Désolé, je me suis pas relu (confus)
Merci, PolyProgr@ms.
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. - Benjamin Franklin
kod128
ProgBoarder
RemonterCiter Windows XP Firefox - Posté le 24/09/2006 à 14:32
Je me penche sur une méthode avec ADS et SBS. Je pense que je peu l'utiliser pour faire des calcules sur des "morceaux de nombre" de 32bits.
Francesco
Modérateur
RemonterCiter Windows XP Firefox - Posté le 29/09/2006 à 10:45
oui tout à fait. Par contre, pour la multiplication et la division, c'est un peu plus compliqué, et je ne crois pas qu'il existe des moyens simples pour y parvenir...
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
zuzuf
ProgBoarder
RemonterCiter Linux Firefox - Posté le 01/10/2006 à 13:26
pour la multiplication et la division, il n'y a pas 36 solutions, tu découpe ton nombre en entiers 32 bits (ou 64 bits si disponible) et tu effectue les opérations avec des entiers codés en base 2^32 (ou 2^64) avec les algorithmes classiques. Mais il y a quand même une question que je me pose:
à priori tu va devoir les afficher ces nombres... en hexadécimal (question)
parce qu'en hexadécimal un nombre codé sur 256 octets ça prend 512 chiffres!!!
Linux a un noyau, windows un pepin

Poster une réponse

STOP aux fautes volontaires !
Message
Formatage
Note: pour partager du code source, merci d'utiliser le wall !
Smileys (sourire) (yekyek) (clein d'oeil) (désapprouve) (triste) (cool) (langue) (confus) (gêné) (neutre) (eek) (surpris) (diable) (flèche) (exclamation) (question) (diable) (idée) (méchant)
Pseudonyme
Recopiez le code
v6 © Computaid SPRL 2005-2008 - Tous droits réservés - Hébergé par eTigris - Page générée en 0,056 s - Crédits - Stats
1 connecté