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 :

Gestion des overflow sur des opérations d'addition


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2007
    Messages : 55
    Par défaut Gestion des overflow sur des opérations d'addition
    Bonjour,

    je souhaite faire une opération d'addition entre des entiers signés de 64-bits. Vu que le processeur cible est un 32-bits, j'ai dû créer une structure dans mon programme C:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    struct{
       long LSW;
       long MSW; 
    } INT64;
    le type "long" étant un entier 32-bits.


    Mon problème se situe au niveau de la gestion des overflow. les spécifications sont telles qu'on ne pourrait atteindre la valeur maximale possible avec un 64-bits. Donc, les overflows n'apparaissent qu'au niveau des opérations entre LSW.

    Exemple:
    opération E1 + E2
    E1: LSW = 2^31
    MSW = 15
    E2: LSW = 2^5
    MSW = 1
    En ce qui concerne la détection des overflows, il faut vérifier dans le cas où les deux opérandes sont du même signe que le résultat de l'addition l'est également; sinon, il y a overflow.

    Ma préoccupation est de pouvoir reporter la retenue de l'opération entre les LSW sur celle entre les MSW.

    Merci de m'aider à trouver une solution.


    ps: j'espère que j'ai été claire.

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Boe,

    Quel compilateur utilises-tu ?

    Il a certainement un type de 64 bits, la dénomination dépendant du compilateur.

  3. #3
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2007
    Messages : 55
    Par défaut
    J'utilise GCC et je développe sous eclipse.

  4. #4
    Membre habitué
    Profil pro
    Lycéen
    Inscrit en
    Mai 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2009
    Messages : 13
    Par défaut
    Le type long long occupe 64 bits.

  5. #5
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2007
    Messages : 55
    Par défaut
    Merci Youcef pour ta réponse.

    Pourrais tu m'en dire plus sur le type "long long"?


    Merci.

  6. #6
    Membre habitué
    Profil pro
    Lycéen
    Inscrit en
    Mai 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2009
    Messages : 13
    Par défaut
    D'après ce que j'ai dans limits.h :
    La valeur maximale de signed long long est 9223372036854775807, sa valeur minimale est -9223372036854775806.
    La valeur maximale de unsigned long long est 18446744073709551615.
    J'ai lu sur un site que le compilateur utilise deux registre 32 bits pour stocker un long long (par exemple edx:eax).
    Pour afficher la valeur d'un long long avec printf, utilise le format : %I64d (ou %I64u pour un unsigned) sous windows, et %lld (ou %llu) sous les autres systèmes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion de projet: encodage des heures sur des tâches
    Par Terminator dans le forum Gestion de projet
    Réponses: 2
    Dernier message: 03/02/2015, 11h10
  2. Comment ajouter des séries dans des graphes sur des feuilles variables
    Par Molomarcopolo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/07/2012, 16h26
  3. Trigger pour mettre des droits sur des procedures et des vues
    Par briino dans le forum Développement
    Réponses: 3
    Dernier message: 23/09/2009, 09h44
  4. Gestion de droits sur des méthodes de classe
    Par Braillane dans le forum Diagrammes de Classes
    Réponses: 1
    Dernier message: 06/10/2008, 16h31
  5. [MCD]Gestion des droits sur des forums
    Par Vivian Pennel dans le forum Schéma
    Réponses: 1
    Dernier message: 01/05/2007, 16h43

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