begin process at 2012 05 28 17:03:52
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Besoin d'octets !!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Besoin d'octets !!

dimanche 5 avril 2009 à 11:53:08 | Besoin d'octets !!

Niwrad

Bonjour à tous,
Voici mon problème : je suis plutôt nouveau né dans l'univers de la programmation et j'essaye de faire un petit peu tout ce qu'il me passe par la tête pour m'entraîner. J'ai donc décidé de faire un programme en C où l'utilisateur entre un nombre qui est le degré de la suite de Fibonacci qui l'intéresse (par exemple, degré 5 et l'ordinateur affiche 8). Même si vous ne savez pas ce qu'est une suite de Fibonacci, là n'est pas l'important car mon problème est tout autre.
En effet, avec des degrés faibles, le programme fontctionne correctement mais  lorsque j'utilise des hauts degrés, le nombre affiché est plus grand que ma variable de type long. Alors voici ma  question : comment faire pour obtenir des nombres  très grands ? Faut-il créer une variable d'un autre type ? Faut-il créer une varible manuellement et lui allouer de la mémoire de la même façon ? Si oui comment faire ...

Merci d'avance pour toutes vos réponses et bonne continuation à tous.

Niwrad
dimanche 5 avril 2009 à 13:53:56 | Re : Besoin d'octets !!

juju12

il y a le type long long sur 64 bits.
Sinon au-delà, faudra créer un autre type, par exemple :
struct int128 {long d[4]};

et coder les fonctions d'opérations, par exemple :

void _Add128(int128*out,const int128*a,const int128*b)
{
   out->d[0]=a->d[0]+b->d[0];
   ...
   return;
}
dimanche 5 avril 2009 à 21:02:16 | Re : Besoin d'octets !!

BruNews

Administrateur CodeS-SourceS

Une bibli de calculs, par définition ça demande des perfs sinon...

On va faire du unsigned pour l'exemple (mieux pour fibonacci):

typedef struct _BNUINT128 {
  DWORD d[4];
} BNUINT128, *LPBNUINT128;

Déclaration de l'addition (fera a += b):
void __fastcall bnADDu128(LPBNUINT128 a, LPBNUINT128 b);
Si on veut conserver l'original a, en faire une copie préalable.
Toutes opérations en __fastcall, les PUSH et POP ne sont pas gratuits, voire très couteux.

Fichier ASM 32 bits:
bnADDu128 PROC ; ecx = *a, edx = *b
  mov   eax, [edx]
  add   [ecx], eax
  mov   eax, [edx+4]
  adc   [ecx+4], eax
  mov   eax, [edx+8]
  adc   [ecx+8], eax
  mov   eax, [edx+12]
  adc   [ecx+12], eax
  ret   0 ' RIEN A DEPILER
bnADDu128 ENDP

Fichier ASM 64 bits:
bnADDu128 PROC ; rcx = *a, rdx = *b
  mov   rax, [rdx]
  add   [rcx], rax
  mov   rax, [rdx+8]
  adc   [rcx+8], rax
  ret   0 ' RIEN A DEPILER
bnADDu128 ENDP

La soustraction est triviale sur le même modèle, mutiplication et dividion sont un peu plus intéressantes.

ciao...
BruNews, MVP VC++



Cette discussion est classée dans : problème, programme, nombre, degré, octets


Répondre à ce message

Sujets en rapport avec ce message

problème de session sous win XP [ par vdox05 ] Bonjour,J' aimerais savoir comment on fait pour savoir le nom de la session dans laquelle le programme est ouvert ...Par exemple si je veux mettre un problème de lib et de dll... [ par Raoul12 ] je programme sous vc++6 et j'aimerais savoir s'il est possible de faire appel à une dll externe à un programme principal sans avoir à recompiler le pr VC++ et ses bugs [ par Xentor609 ] salut à tous !J'ai un problème un peu spécial :j'utilise les sockets pour transférer des fichiers (en SOCK_STREAM). Le programme marche très bien mais Problème pour lire les fichiers audio dans un programme C++ [ par Nicolas ] Pour un projet C++ (linéaire),il souhaiterais réalisé une bibliothèque musical(.mp3, .wav). J'aurais besoin pour ca de lire les fichiers audio mais je nombres aléatoires en c++ [ par johanb ] bonjour a tous, voici mon problême.Dans un programme, je dois générer deux fois un nombre aléatoire entre 0 et n (appelé max dans le programme). Voici Programme avec Builder C++ [ par Kyzand ] j'ai un programme a faire mais je suis bloquéje le lis''Un nombre Armstrong est défini comme étant un nombre de n chiffres dont la somme des puissance Probleme avec la librairie <conio.h> et avec le type "float" en c++ [ par Rigel Io ] Salut, j'aurai besoin de vos conseils éclairé en c++. Je suis débutant et j'apprends encore sur les tutorials possible de trouver sur Internet, je pro Problème - system() [ par Tub 95 ] Bonjour à tous,Je voudrais effectuer un petit programme en C qui me présente un menu enfin de lancer à partir de ce menu des application !Pour ceci j' Decrypter et lancer programme exécutable [ par jockos ] J'ai un programme exéctuable (fichier .exe) qui est crypté.Je veux le décrypter et le lancer dans la foulée (l'exécuter).Le problème, c'est que quand problème avec cscanf() [ par bouba ] J'utilse cscanf() pour permettre l'entrée au clavier par l'utilisateur dans mon programme. Y'a pas de problème sauf que l'on ne peut pas faire d'espac


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,139 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales