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

Programmation système Discussion :

code binaire: overflow et complément à 2


Sujet :

Programmation système

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 13
    Points : 9
    Points
    9
    Par défaut code binaire: overflow et complément à 2
    Bonjour, tout d'abord je n'ai pas su où mettre mon topic donc je le mets par défaut ici en espérant que le modérateur le reconduise dans la rubrique adéquate.

    voici mon problème: j'aimerai comprendre le concept d'overflow et de complément à 2 dans le calcul binaire.
    EX1: 1010 (-6)
    +1100 (-4)
    -----
    0110 ---->> il y a overflow car le signe de 0110 est différent de ceux de 1010 et 1100. En plus la réponse n'est pas correcte car 0110=6 hors -6-4=-10. dans ce cas, comment faire pour trouver la reponse correcte? faut il faire un complément à 2? sur quel chiffre?

    EX2: 00001111 (15)
    − 00100011 (35)
    ----------
    11101100 (−20)---->>> la réponse est correcte car 15-35=-20 mais le signe de 1110 1100 est quand meme différent de ceux de 00001111 et de 00100011. Dans ce cas, y a-t-il overflow?

    EX3: 0111 (7)
    +0011 (3)
    ------
    1010 (10)---->> réponse correcte mais signe diférents. Overflow?

    Concretement, dans quel cas y a-t-il overflow et dans quel circonstance faut-il passer au complément à 2?
    Merci de m'eclairer

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Up Up Up

  3. #3
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Bonsoir.

    Oublie un instant cette règle et essaie de comprendre d'où elle provient, ainsi tu comprendras comment elle s'applique vraiment et tu sauras la retrouver.

    * Si j'additionne deux nombres positifs, on doit obtenir un nombre positif. S'il y a overflow, le résultat sera négatif.
    * Si j'additionne deux nombres négatifs, on doit obtenir un nombre négatif. S'il y a overflow, le résultat sera positif.
    * Si j'additionne un nombre positif et un nombre négatif... Il ne peut pas y avoir overflow ! Jamais. Dis-moi si ça ne te semble pas évident, je détaillerai.

    Donc, la règle pour les additions est la suivante :
    Si les deux opérandes ont le même signe, le résultat doit avoir le même signe que les opérandes. A défaut, cela traduit un dépassement de capacité. Si les opérandes sont de signes différents, aucun dépassement possible.


    Enfin on en déduit naturellement l'équivalent pour les soustractions en remarquant que A - B est équivalent à A + (-B) :
    Si les deux opérandes ont des signes différents, le résultat doit avoir le même signe que l'opérande de gauche. A défaut, cela traduit un dépassement de capacité. Si les opérandes sont de signes identiques, aucun dépassement possible.

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 616
    Points : 30 833
    Points
    30 833
    Billets dans le blog
    1
    Par défaut
    Salut

    L'overflow se produit quand le nombre à stocker devient trop grand pour le sizeof() de la variable. Dans ce cas, ce qui dépasse disparait.
    Et on utilise ce principe pour accélérer certains calculs notamment quand on additionne deux opposés.
    Exemple: 0100 (4) + 1100 (-4) = 1 0000
    Le "1" dépassant les 4 bits de la zone d'exemple, il disparait et le résultat donne 0 (ce qui est mathématiquement correct)

    Donc avec ton 1010 (-6) + 1100 (-4), le résultat donne 1 0110 soit effectivement 6 dans une zone de 4 bits.

    Citation Envoyé par jonathan00243
    dans ce cas, comment faire pour trouver la reponse correcte? faut il faire un complément à 2? sur quel chiffre?
    Tu ne peux pas car tu n'as aucun moyen interne de savoir que ce résultat "6" est incorrect (il a été calculé mathématiquement)
    Maintenant si tu développes ton propre système de contrôle, et donc que tu sais que ce 6 n'est pas bon, alors pour retrouver le bon résultat il te faut juste rajouter un "1" à gauche de ce "6" (qui deviendras le "-") et retransformer tout ça en positif selon la méthode inverse
    1 0110 - 1 donne 10101 puis on inverse chaque bit ce qui donne 01010 soit 10 soit au final -10
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juin 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2015
    Messages : 1
    Points : 1
    Points
    1
    Par défaut explication overflow ou carry ou autre
    Bonjour

    j'aimerais avoir de l'aide pour comprendre cet exercice

    Les nombres sont spécifiés en hexadécimal (codification en complément à 2 sur 16 bits).
    Le résultat doit être en hexadécimal.

    4 E 8 8
    C 4 2 F
    0100 1110 1000 1000
    1100 0100 0010 1111
    ----------------------
    10001 0010 1011 0111
    J'avais repondu O mais apparament c'est N ????
    Est-ce que ce calcul provoque un débordement arithmétique ? [O / N] (Tapez O pour Oui et N pour Non)

    Merci d'avance si quelqu'un sait m'expliquer

Discussions similaires

  1. Récupérer le code binaire d'un fichier
    Par zoneaide dans le forum Langage
    Réponses: 1
    Dernier message: 13/11/2006, 22h34
  2. Création d'une image à partir de son code binaire
    Par thefaycal dans le forum ASP
    Réponses: 11
    Dernier message: 18/05/2006, 18h39
  3. Récuperation du code binaire d'une image dans une chaîne
    Par Nomely dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 27/01/2006, 20h01
  4. [SQL] Code binaire de ' (apostrophe)
    Par fab22montpellier dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/10/2005, 12h25
  5. Executer du code binaire au sein d'un programme
    Par Hidekii dans le forum MFC
    Réponses: 13
    Dernier message: 07/09/2005, 23h10

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