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

Algorithmes et structures de données Discussion :

La soustraction binaire


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 24
    Par défaut La soustraction binaire
    Bonjour,

    J'ai un grand Problème avec la soustraction binaire, j'essaie sans succès de calculer (27.625-51.375), avant de soustraire j'ai converti les nombres décimaux en binaire et voici ce que j'ai trouvé:

    (51.375)=(110011.011)
    (27.625)=(11011.101)

    En faisant la soustraction j'obtiens: (101000.010) ce qui vaut -8.25 en décimale, c'est faux mais j'arrive pas à trouver mon erreur.

    Si vous pouviez m'aider ça serait sympa de votre part

  2. #2
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Bonjour,

    tu as du te tromper dans ta soustraction, en utilisant l'algorithme classique de l'école primaire j'obtiens (-10111.111)b=-23.75 ; t'es-tu emmêlé dans les retenues (entre parenthèses ci-dessous) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       1 (1)1 (1)0 (1)0 (1)1 (1)1 . (1)0 1 1
    (1)0 (1)1 (1)1 (1)0 (1)1 (1)1 .    1 0 1
    ----------------------------------------
       0    1    0    1    1    1 .    1 1 1

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 24
    Par défaut
    Merci de m'avoir répondu

    J'ai pas compris comment vous avez fait votre soustraction, la soustraction d'après ce que j'ai compris ce fait comme suit:

    0-0= 0
    0-1= 1 et retenue de 1
    1-0=1
    1-1=0

    l'avez-vous appliquer ?
    merci encore de m'avoir répondu

  4. #4
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Bonjour,

    dans le résultat de ma soustraction il y a une erreur sur le dernier chiffre (il faut lire 0 au lieu de 1 pour obtenir 10111.110). Je suis désolé, la prochaine fois je me relirai mieux

    Sinon pour l'algorithme de la soustraction, j'écris le nombre le plus grand sur la première ligne, le plus petit sur la seconde en alignant le point de séparation entre la partie entière et la partie fractionnaire des nombres.
    Les retenues ne sont pas interprétées de la même manière sur la première ligne (+10) et sur la seconde (+1).

    Ensuite par colonne de chiffre de la droite vers la gauche :
    S'il n'y a pas de retenues, si le chiffre du haut est plus grand ou égal que le chiffre du bas pas de problèmes. Si le chiffre du haut est inférieur je lui ajoute une retenue (donc +10) j'ajoute également une retenue au chiffre qui est à gauche de celui du chiffre de la seconde ligne (+1).
    S'il y a des retenues, je les applique d'abord puis j'applique le point précédant.

    Bon j'ai l'impression de mal m'expliquer ... disons qu'il suffit de simplement de poser la soustractioncomme on le faisait au primaire en se souvenant qu'on travaille en base 2 et pas en base 10, sinon tout est pareil.

  5. #5
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Ou sinon, la technique usuelle du complément à 2

    +27.625 = (0) 0011011.101
    +51.375 = (0) 0110011.011
    
    Négatif, par complément à 2:
    -51.375 = -(0) 0110011.011
            =  (1) 1001100.101
    
    Addition binaire
    +27.625 =  (0) 0011011.101
    -51.375 =  (1) 1001100.101
    -------    ---------------
               (1) 1101000.010
    -23.75  = -(0) 0010111.110
    
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 485
    Par défaut
    Bonjour,

    Citation Envoyé par Need you Voir le message
    d'après ce que j'ai compris ce fait comme suit:

    0-0= 0
    0-1= 1 et retenue de 1
    1-0=1
    1-1=0
    Tout d'abord, tu essaies de soustraire une valeur plus grande que le nombre d'origine (et donc d'obtenir un résultat négatif). Or, même en décimal, c'est difficile : tu obtiens un « complément » qu'il faut à nouveau soustraire de l'ordre de grandeur le plus proche (donc, ici, « 100 » en décimal). Tu vas avoir le même problème en binaire. Essaie plutôt de faire « 51,375 - 27,625 ». Tu obtiendras la valeur absolue de ton résultat et tu n'auras plus qu'à placer ton signe devant.

    Ensuite, n'oublie pas que, lorsque tu soustrais, tu ne fais pas une retenue mais un « emprunt » au chiffre d'à côté. Ce n'est pas la même chose. Et lorsque ce n'est pas possible, alors il faut décrémenter le premier chiffre non nul puis faire des emprunts en cascade. Par exemple, en décimal :


    … donne


    … et c'est la même chose en binaire : quand tu fais « 0 - 1 », alors le chiffre décrémenté passe à zéro, ton opérande « 0 » devient « 10 » et tous les zéros intermédiaires deviennent des « 1 ». Exemple :


    … donne


    Tu peux ainsi appliquer l'algorithme que l'on t'a appris à l'école à toutes les bases : ici le décimal et le binaire, mais c'est la même chose pour l'hexadécimal, pour la base 7, la base 13, etc.

    Sinon, comme te l'indique Pseudocode, si tes champs de bits ont une taille fixe et identique, tu peux procéder comme le font les ordinateurs : en utilisant le complément à deux. Il s'agit en substance de « faire le tour », comme pour un compteur kilométrique, en ajoutant le complément de ton nombre puis en incrémentant le résultat.

Discussions similaires

  1. Addition et soustraction binaire
    Par Madesp dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 16/02/2013, 23h02
  2. addition et soustraction binaire
    Par yemen dans le forum C#
    Réponses: 1
    Dernier message: 13/05/2010, 13h34
  3. Réponses: 5
    Dernier message: 11/12/2002, 12h31
  4. communication fichier binaire fichier txt
    Par micdie dans le forum C
    Réponses: 3
    Dernier message: 05/12/2002, 00h19
  5. fichier binaire ou texte
    Par soussou dans le forum C++Builder
    Réponses: 4
    Dernier message: 14/06/2002, 13h39

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