IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Multiplier des grands entiers


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Par défaut Multiplier des grands entiers
    Bonjour,

    Il y a quelques temps j'avais ouvert une discussion à propos de l'addition de grands entiers.
    Voici l'ancien post où le problème de base est expliqué : http://www.developpez.net/forums/d15...entiers-longs/

    Cependant, maintenant il faut que je fasse une multiplication.
    J'ai presque réussit, seulement il faut que je gère le "déplacement" de mes lignes intermédiaires. Ce déplacement, je pense qu'on peut le simuler, par un ajout de 0.
    C'est ce que j'ai fait, mais il y a un problème, car mon tableau n'est pas modifié quand je lui demande d'ajouter des 0. D'où peut provenir ce problème ?

    Merci d'avance.

  2. #2
    Membre éclairé
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    70
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 70
    Par défaut
    tu stockes bien tes nombres en binaire ?
    alors la multiplication par une puissance de 2 est rapide (un décalage+ report de bit)
    et on peut en profiter !
    exemple
    45*13 = 45*(8+4+1) = 45*8+45*4+45

    algo :
    resultat=0
    n1=45
    n2=13
    tant que n2 != 0
    n2 impair ? (dernier bit à 1)
    oui ->resultat+=val
    n1*=2 //on décale de 1 dans le sens des bits significatifs
    n2/=2 //on décale de 1 dans le sens des bits non significatifs
    fin "tant que"

    il ne te reste plus qu'a coder le fonction pour décaler les bits !
    En suivant cette algo, tu n'a pas de lignes intermédiaire

  3. #3
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    ajouter des zeros, c'est bien, mais il faut bien que ce soit un caractères '0' (zéro ascii), pas le caractère nul ('\0' qui vaut 0).

Discussions similaires

  1. coder des grandes entier
    Par you.baddi dans le forum C
    Réponses: 3
    Dernier message: 01/01/2009, 02h33
  2. Réponses: 3
    Dernier message: 12/08/2007, 16h49
  3. Opération sur de grands entiers
    Par tutu dans le forum C
    Réponses: 16
    Dernier message: 24/05/2005, 08h56
  4. Warnings intempestifs (tout de suite des grands mots)
    Par Walm dans le forum C++Builder
    Réponses: 4
    Dernier message: 30/04/2004, 20h37
  5. Obtenir le plus grand entier !
    Par Gogoye dans le forum C
    Réponses: 3
    Dernier message: 09/12/2003, 09h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo