soustraction en base 2
soustraction en base 2
bonjour
on a un dm de SI ou il faut convertir des nombres decimaux en binaire (ca ca va...)
mais apres on nous parle de faire la soustraction de deux nombres binaires...
et la je ne vois pas comment faire... si quelqu'un pouvait m'expliquer la méthode...
merci
on a un dm de SI ou il faut convertir des nombres decimaux en binaire (ca ca va...)
mais apres on nous parle de faire la soustraction de deux nombres binaires...
et la je ne vois pas comment faire... si quelqu'un pouvait m'expliquer la méthode...
merci
L’explication est un peu longue. Cependant, en résumé, je peux dire qu’il faut pouvoir additionner et soustraire des entiers relatifs. Si, on regarde comment représenter un entier binaire négatif. On peut rajouter un bit en tête du nombre ; Zéro, c’est positif. Un, c’est négatif. Problème, le nombre zéro a deux représentations, +0, -0. De plus, l’addition d’un nombre positif et d’un négatif ne marche pas.
Pour remédier à ces problèmes, on utilise la notation en complément à deux. Les nombres positifs sont représentés comme d’habitude. Par contre, les nombres négatifs :
• On inverse les bits de l'écriture binaire positif, c’est le complément à un,
• On ajoute 1 au résultat, le dépassement est ignoré.
Du coup, la soustraction, c’est l’addition de l’opposé. L’explication complète est un peu longue comme je le disais. Cependant, si tu peux le faire à la main sur des nombres codés sur 4 bits. Tu devrais voir le pourquoi.
Pour remédier à ces problèmes, on utilise la notation en complément à deux. Les nombres positifs sont représentés comme d’habitude. Par contre, les nombres négatifs :
• On inverse les bits de l'écriture binaire positif, c’est le complément à un,
• On ajoute 1 au résultat, le dépassement est ignoré.
Du coup, la soustraction, c’est l’addition de l’opposé. L’explication complète est un peu longue comme je le disais. Cependant, si tu peux le faire à la main sur des nombres codés sur 4 bits. Tu devrais voir le pourquoi.
por mon exo j'avais 43-15(=28 ) a calculer en binaire
il nous disais de le faire de deux facons: la premiere en posant la soustraction (assez compliquée avec les retenues...) puis avec le complément a deux...
on nous a dit de mettre les chiffres sur 8 bits
( 43 )10=( 0010 1011 )2
( 15 )10=( 0000 1111 )2
( 28 )10=( 0001 1100 )2
le complément a deux de 15 étant (1111 0001)2 en 8 bits
et la somme de 43 et du complément nous donnait un chiffre a 9 bits (1 0001 1100)2
et la on nous dit de ne prendre que les 8 bits les plus faibles...
pourquoi ne prend on pas les 9 bits ? (hormis le fait que ca marche^^)
il nous disais de le faire de deux facons: la premiere en posant la soustraction (assez compliquée avec les retenues...) puis avec le complément a deux...
on nous a dit de mettre les chiffres sur 8 bits
( 43 )10=( 0010 1011 )2
( 15 )10=( 0000 1111 )2
( 28 )10=( 0001 1100 )2
le complément a deux de 15 étant (1111 0001)2 en 8 bits
et la somme de 43 et du complément nous donnait un chiffre a 9 bits (1 0001 1100)2
et la on nous dit de ne prendre que les 8 bits les plus faibles...
pourquoi ne prend on pas les 9 bits ? (hormis le fait que ca marche^^)
Quand tu soustrais un entier positif d'un autre, le résultat est forcément plus faible.jlau a écrit :et la on nous dit de ne prendre que les 8 bits les plus faibles...
pourquoi ne prend on pas les 9 bits ? (hormis le fait que ca marche^^)
Et sinon pourquoi ça marche, c'est simplement parce que : 43 - 15 = 43 - (255 - 240) = 43 + 240 - 255 = 43 + 240 + 1 - 256.
Avec 240 le "vrai" complémentaire de 15, et tu lui ajoutes 1 pour que ça marche, en effet après il faut enlever 256, et ça tombe bien parce que c'est 1 0000 0000. Ok?
Dernière modification par gardener le 07 févr. 2008 13:10, modifié 1 fois.
Doctorant Maths-Info, ancien ENS Cachan.
En fait le 9ieme bit c'est la retenue qui donne l'information sur le signe du résultat. 1 veut dire que le resultat est positif, 0 resultat negatif. (à l'exception du Zero).jlau a écrit :por mon exo j'avais 43-15(=28 ) a calculer en binaire
il nous disais de le faire de deux facons: la premiere en posant la soustraction (assez compliquée avec les retenues...) puis avec le complément a deux...
on nous a dit de mettre les chiffres sur 8 bits
( 43 )10=( 0010 1011 )2
( 15 )10=( 0000 1111 )2
( 28 )10=( 0001 1100 )2
le complément a deux de 15 étant (1111 0001)2 en 8 bits
et la somme de 43 et du complément nous donnait un chiffre a 9 bits (1 0001 1100)2
et la on nous dit de ne prendre que les 8 bits les plus faibles...
pourquoi ne prend on pas les 9 bits ? (hormis le fait que ca marche^^)
En fait il faut voir tout ceci du point de vue conception des circuits. Comme tu l'as remarqué le soustracteur cablé est plutot complexe à réaliser, alors que le circuit inverseur est immédiat, il suffit alors de ré-utiliser l'additionneur (avec la retenue) pour disposer d'un soustracteur.
Plus simple à tester et un même circuit pour les deux opérations arithmétiques.
La base de tout cela, c'est l'arithmétique modulo 2^n...
Sur 8 bits, un nombre positif ou nul compris entre 0 et +127 est représenté par son écriture binaire naturelle, tandis qu'un nombre négatif compris entre -128 et -1 est représenté par l'écriture binaire naturelle de la somme de ce nombre et de 256, écriture qui se trouve justement comprise entre celle de 128 et celle de 255.
Sur le sujet, on peut consulter (gratuitement, au CDI) le Tec&Doc SI MPSI / PCSI ; on y trouve, page 671 et suivantes, un long exercice dans lequel tous les cas possibles sont envisagés.
Sur 8 bits, un nombre positif ou nul compris entre 0 et +127 est représenté par son écriture binaire naturelle, tandis qu'un nombre négatif compris entre -128 et -1 est représenté par l'écriture binaire naturelle de la somme de ce nombre et de 256, écriture qui se trouve justement comprise entre celle de 128 et celle de 255.
Sur le sujet, on peut consulter (gratuitement, au CDI) le Tec&Doc SI MPSI / PCSI ; on y trouve, page 671 et suivantes, un long exercice dans lequel tous les cas possibles sont envisagés.