1) L`algorithme de l`addition en base 10 2) Comment ajouter des

publicité
PARTIE ALGORITHMIQUE
TP3 Addition de deux entiers exprimés en binaire
1) L’algorithme de l’addition en base 10
Pour ajouter 2 nombres exprimés en base 10, on les pose en colonne :
On commence par ajouter les chiffres des unités, ici 8 et 6 ce qui donne 14.
Si le nombre trouvé est supérieur ou égal à la base, ici 10, on soustrait 10, on
écrit 4 et on a une retenue de 1 pour les dizaines. Ensuite, on ajoute les chiffres
des dizaines et la retenue : 2+5+1=8. Ce nombre est inférieur à 10 donc on
écrit 8 et la retenue pour les centaines vaut 0. On continue cet algorithme jusqu’à la fin.
1
0
1
0
728
+ 456
1184
Rem : la retenue initiale est égale à 0.
2) Comment ajouter des nombres exprimés en base 2 ?
1
1
1
0
101
+ 111
1100
On procède de la même façon pour ajouter des nombres en base 2 :
On ajoute 1 et 1 et la retenue initiale qui vaut 0 : le résultat est 10.
Comme vu dans l’exemple précédent, si le nombre trouvé est supérieur
ou égal à 10 (2 en décimal), on soustrait la base et on a une retenue pour le
chiffre des deuzaines. On ajoute ensuite 0+1+1de retenue. Le résultat est 10 :
on pose 0 et on retient 1. Puis on continue l’algorithme jusqu’à la fin.
3) Table d’addition binaire
1. Compléter la table d’addition de deux
L’addition est l’opération qui
consiste à effectuer :
– Dans un premier temps, la somme Si
de deux digits de même rang tels
que a i et bi par exemple,
– Puis dans un second temps, une
deuxième somme entre les digits de
rang supérieur
ai +1 et b i +1 et la valeur de la
retenue issue de l’addition
précédente Ri .
nombres binaires :
0+0
0+1
1+0
1+1
=
=
=
=
je pose 0 et je retiens 1
Si l’on désire additionner des nombres
binaires comportant plusieurs bits
(a n−1 , . . . , a2 , a1 , a0 ) + (b n−1 , . . . , b2 , b1 , b0 ),
on doit ajouter les unités (rang 0),
puis les bits de rang 1, puis 2, etc.
Il faut tenir compte, dès le deuxième rang que l’on peut avoir une retenue ; donc il
faut ajouter au résultat précédent la retenue de l’addition de rang inférieur. Pour
l’addition de deux nombres binaires, on peut donc considérer qu’il faut ajouter à
chaque rang, 3 bits : Sn = (an + bn ) + Rn−1
2. Compléter la table suivante
Rn−1
0
0
0
0
1
1
1
1
bn
0
0
1
1
0
0
1
1
an
0
1
0
1
0
1
0
1
Sn
Rn
En considérant une addition binaire comme la somme à
effectuer sur 3 mémoires 1 bits, nous aurons comme
résultat : un bit de somme et un bit de retenue.
La retenue est égale à 1 dès que le résultat de la somme
précédente atteint la valeur 2 (10 en binaire) ou 3 (11 en
binaire).
4) Algorithme d’addition.
Soit 2 nombres A et B
représentés par les listes :
– A = [a n−1, a n−2, . . ., a 0]
– B = [b n−1,b n−2, . . ., b 0]
et leur somme S = A + B
représentée par la liste :
– S = [S n−1, S n−2, . . ., S 0]
et soit Rn−1 Rn−2 . . . R0 les retenues
successives.
En Python, dans les
programmes réalisés au cours
de ce TP, A, B et S seront
représentés par des variables de
type list.
Le nombre 6 sera par
exemple représenté par la
liste : [1,1,0].
Algorithme : Addition en base 2
INITIALISATION :
A FFECTER À R LA VALEUR …..
TRAITEMENT :
POUR i VARIANT DE 0 À ……
AFFECTER À w LA VALEUR ai + bi + R
SI w <=……..
ALORS
A FFECTER À Si LA VALEUR …….
A FFECTER À R LA VALEUR ………
S INO N
A FFECTER À Si LA VALEUR………
A FFECTER À R LA VALEUR ….......
1) Compléter l’algorithme d’addition ci-dessus :
2) Définir une fonction add2 qui effectue l’addition binaire de 2 entiers A et B donnés par leur
représentation binaire sur n bits.
3) On pensera à traiter le cas particulier de la dernière retenue égale à 1.
Aide : transformer la chaine issue de l’input en liste avec la fonction list(chaine). Placer les sommes
de la droite vers la gauche dans une liste s grâce à s.insert(0,valeur à insérer). int(ch) transforme
un caractère ‘6’ en nombre entier 6.
4) Pour les plus rapides, écrire une fonction nommée neg2 qui détermine le complément à 2 n d’un
entier codé sur n bits.
a) Première méthode : pour trouver le complément à 2n d’un entier A écrit sur n bits, il
suffit, dans la représentation binaire de A, de remplacer chaque 0 par un 1 et chaque
1 par un 0. Il suffit ensuite d’ajouter 1 au nombre obtenu.
b) Deuxième méthode : pour donner le complément à 2n, en partant de la droite, on
garde les zéros jusqu’au premier ‘1’ rencontré. On garde aussi ce premier ‘1’. En se
déplaçant vers la droite, on inverse les chiffres (1 devient 0 et 0 devient 1).
Téléchargement