soustraction en base 2

jlau

soustraction en base 2

Message par jlau » 05 févr. 2008 22:57

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

nafpy

Message par nafpy » 05 févr. 2008 23:08

Pour la soustraction tu calcules d'abord l'opposé de ton opérande de la façon suivante: Tu calcules le complement à 1 de ton mot, puis tu lui rajoutes 1.
Ensuite il ne te restes qu'a additionner pour effectuer la soustraction.

jlau

Message par jlau » 05 févr. 2008 23:51

pourquoi doit on y ajouter un?

ne peut on pas poser une soustraction comme on le fesait en CE2 avec les etnues et tout ca? si oui pouvez vous m'expliquer la méthode?

DOS MARTIRES

Message par DOS MARTIRES » 06 févr. 2008 08:26

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.

jlau

Message par jlau » 06 févr. 2008 23:27

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^^)

Messages : 1832

Inscription : 01 août 2007 15:04

Profil de l'utilisateur : Élève de lycée

Message par gardener » 07 févr. 2008 00:06

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^^)
Quand tu soustrais un entier positif d'un autre, le résultat est forcément plus faible.

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.

nafpy

Message par nafpy » 07 févr. 2008 11:47

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 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).
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.

Bernard Lodier

Message par Bernard Lodier » 07 févr. 2008 20:55

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.

Colin

Message par Colin » 08 avr. 2008 00:01

Si ça t'intéresses vraiment je peux te filer un scan d'un cours d'elec num.
Mais envoies un MP.

Répondre