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

  FORUM HardWare.fr
  Programmation

  Int pas suffisants (4 octets) !!! Comment faire??

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Int pas suffisants (4 octets) !!! Comment faire??

n°49176
braisik
Montpel's c'est de la braise..
Posté le 26-07-2001 à 20:45:47  profilanswer
 

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

mood
Publicité
Posté le 26-07-2001 à 20:45:47  profilanswer
 

n°49178
LetoII
Le dormeur doit se réveiller
Posté le 26-07-2001 à 20:49:01  profilanswer
 

Essaye avec les float ou les double, si non aprés faut que tu te programme ça à la main

n°49181
braisik
Montpel's c'est de la braise..
Posté le 26-07-2001 à 20:56:43  profilanswer
 

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...:)

n°49183
LetoII
Le dormeur doit se réveiller
Posté le 26-07-2001 à 21:06:45  profilanswer
 

Désolé effectivement renseignement pris le double ne monte que jusqu'à 3.4E308 un poil juste ;)

n°49184
JoeHell
mais non ca va marcher ....
Posté le 26-07-2001 à 21:16:01  profilanswer
 

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

n°49189
antp
Super Administrateur
Champion des excuses bidons
Posté le 26-07-2001 à 22:55:43  profilanswer
 

à 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...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°49226
Carbon_14
Posté le 27-07-2001 à 08:52:27  profilanswer
 

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.

n°49260
robUx4
misc coder
Posté le 27-07-2001 à 10:30:40  profilanswer
 

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)

n°49277
Carbon_14
Posté le 27-07-2001 à 11:04:45  profilanswer
 

C'est peut-être juste une "colle" pour faire travailler les petites cellules grises du forum.  :lol:

n°49280
braisik
Montpel's c'est de la braise..
Posté le 27-07-2001 à 11:08:12  profilanswer
 

Ne vous inquietez pas!! Ya une finalité: faire de la crypto  ;)

mood
Publicité
Posté le 27-07-2001 à 11:08:12  profilanswer
 

n°49346
mareek
Et de 3 \o/
Posté le 27-07-2001 à 14:42:24  profilanswer
 

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).


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°49413
Pitounet
Posté le 27-07-2001 à 23:32:30  profilanswer
 

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...

n°49417
electricbl​ue
Pas très inspiré...
Posté le 27-07-2001 à 23:51:22  profilanswer
 

maple gere tres bien les tres gd entiers....

n°49430
matafan
Posté le 28-07-2001 à 03:15:46  profilanswer
 

Java aussi :)

n°49432
HelloWorld
Salut tout le monde!
Posté le 28-07-2001 à 04:22:55  profilanswer
 

Prograzine a fait un article interressant la dessus
http://www.citeweb.net/discase/9/GDNOMBRE.htm


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  Int pas suffisants (4 octets) !!! Comment faire??

 

Sujets relatifs
[SQL] TO_INT[en n'importe quoi], reseau, octets et compagnie
[VC++6.0] Comment on fait pour convertir des INT an CHAR *[C++]Transformer un INT en CHAR, un nombre en une chaine de char,quoi
Plus de sujets relatifs à : Int pas suffisants (4 octets) !!! Comment faire??


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