top of page

Projet 2 - Additionneur 1 bit

L'objectif de ce projet est d'additionner 2 chiffres binaires

Accéder aux scripts du projet

Les 3 variables du début du programme
variables début.jpg

Tout d’abord, j'ai mis dans les variables n et p des nombres binaires afin de pouvoir faire des calculs avec tous les chiffres séparées par une virgule. Je n'ai volontairement rien mis dans la variable r car c'est ici que viendra se mettre les chiffres du nombre final

La boucle for

J’ai vu que dans les listes que je viens de remplir, il y a 8 éléments à chaque fois : je sais que dans une liste, le premier élément correspond au rang 0. Le premier paramètre correspond au nombre de début : je mets donc comme premier paramètre, le chiffre 7.

Pour le deuxième paramètre, qui correspond à quelle chiffre la boucle doit d’arrêter, je veux que cela s’arrête au rang 0, je vais donc mettre -1 car le range() prend toujours le chiffre d’après. Le dernier paramètre correspond au pas que doit prendre la boucle for, je souhaite qu’elle lise mes listes de droite à gauche afin d’effectuer correctement mes calculs binaires, je vais donc mettre -1 afin qu’il me lise mes listes dans le sens contraire de lecture mais en gardant un pas de 1 afin de ne pas perdre des nombres.

boucle for.jpg
La variable r
variables r.jpg

J’ai trouvé que le seul élément qui n’était pas encore compter dans le résultat était la retenu qui est symbolisé par la lettre c. En mettant, r = c + r, j’ai une erreur dans la console me disant que Python ne peut pas additionner un nombre entier avec une liste. J’effectue donc dans la console la fonction type() avec mes 2 variables, on me dit que c est un nombre entier et que r est une liste. De là, je me dis qu’il faut forcement transformer l’un des 2 pour qu’il soit dans les mêmes types.

J’essaye de transformer la liste en un nombre entier mais je n’y arrive pas. Il me vient l’idée de transformer la variable c en une liste afin de pouvoir additionner les 2 sans problèmes. J’écris donc r = [int(c)] + r, ce qui marche mais j’ai désormais 9 bits car il me mets la retenu même si elle est de 0 devant l’addition binaire. J’ai rajouter la fonction int() pour spécifier au programme que c est un nombre entier. Cette variable est en dehors de la boucle for car elle ne doit être appelé à chaque occurrence de la boucle car la variable c dit si il y a une retenue dans le calcul.

bottom of page