Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4955 connectés 

 


Dernière réponse
Sujet : Int pas suffisants (4 octets) !!! Comment faire??
HelloWorld Prograzine a fait un article interressant la dessus
http://www.citeweb.net/discase/9/GDNOMBRE.htm

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
HelloWorld Prograzine a fait un article interressant la dessus
http://www.citeweb.net/discase/9/GDNOMBRE.htm
matafan Java aussi :)
electricblue maple gere tres bien les tres gd entiers....
Pitounet Franchement, je te conseille vivement de coder ce genre de truc toi-même, que ce soit en C, en C++ ou n'impote quel autre langage que tu utilises.
C'est un exercice classique qui te permettra de te perfectionner en algorithmique. Perso, j'ai déja eu à le faire 2 fois (en pascal et en C), dont une fois pour faire un petit système de crypto. C'était assez enrichissant...
mareek sinon tu peux utiliser le langage Lisp, les entier ne sont pas limités, la seule limite est la taiile de la mémoire disponible. Mais bon, c'est un des seuls intérets du langage (à mon avis).
braisik Ne vous inquietez pas!! Ya une finalité: faire de la crypto  ;)
Carbon_14 C'est peut-être juste une "colle" pour faire travailler les petites cellules grises du forum.  :lol:
robUx4

braisik a écrit a écrit :

Salut
 
Dites moi, comment faire en C/C++ pour travailler avec des nombres qui surpassent la "range" des int? En effet il faut que je travaille avec des nombres de l'ordre de 2^700!!!!
Est ce qu'il existe des classes toutes faites permattant de travailer avec de tels nombres?
 
Merci  




 
2^700 ? Mais c'est pour faire quoi ? Ca existe même pas dans la nature des tels chiffres... (même 100 je pense que ca existe pas)

Carbon_14 S'il veut faire un calcul "absolu" sans perte de données avec les mantisses, il faut utiliser des chaînes de longueur 2^700, chaque caractère contenant le chiffre exact.
 
En QuickBasic (DOS), quelqu'un avait écrit une bibliothèque pour calculer en BCD. C'était encombrant, mais on ne perdait aucun chiffre, comme on le ferait à la main.
 
Si c'est codé en puissance de deux, il doit y avoir moyen de coder en binaire "directement".  
10011010011001010001111101101...........01011
En les regroupant sous forme d'octets, ça fait 700/8 caractères.
 
L'addition, c'est pas trop compliqué... Reste à traiter les autres opérations.
Bah un extended ca fé 10 octets...
de 3.6 x 10^–4951 à 1.1 x 10^4932 ca devrais aller...
Mais une petite contrainte, il faut que tu utilise C++ Builder.
antp à l'école on avait dû faire une classe "BigInteger" qui stockait deux digits dans un octet, pour accepter des nombres très grands.
On avait dû refaire les 4 opérations.
La version que j'avais faite était relativement performante par rapport à ce que les autres avaient fait.
Si ça t'intéresse...
JoeHell Effectivbemen 2^700 ca fait du monde
un truc
 
class CHNumber
{
private
  LPBYTE   digits;
public
CHNumber();
~CHNumùber();
CHNumber(DWORD value);
....
 
le truc est de redfinir les operateurs de + - * / etc ...
pr gerer les depassements et cree dynamicement un nbre aussi grd ke tu veux avec ton tableau d'octet.
ex bateuau  
 
                   digits[1] digits[0]
                       |     |
128 + 192 ( >255) = [ 70][255]
 
c un exo assez simple d'implementation objet, si j'ai le tps je peux te le develloper un peu
LetoII Désolé effectivement renseignement pris le double ne monte que jusqu'à 3.4E308 un poil juste ;)
braisik Malheureusement les float et double ne suffisent pas.
Au max le double est codé sur 8 octets soit 64 bits alors que j'ai besoin d'utiliser des chiffres codés sur plus de 700 bits!!! :pt1cable:  
Effectivement il faut que je code ces types moi même mais bon, si le code existe déjà c'est mieux...:)
LetoII Essaye avec les float ou les double, si non aprés faut que tu te programme ça à la main
braisik Salut
 
Dites moi, comment faire en C/C++ pour travailler avec des nombres qui surpassent la "range" des int? En effet il faut que je travaille avec des nombres de l'ordre de 2^700!!!!
Est ce qu'il existe des classes toutes faites permattant de travailer avec de tels nombres?
 
Merci

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)