2. Représentation des entiers relatifs

Complément à deux

Travail à faire :

Écrire un programme qui demande à l’utilisateur d'entrer un entier relatif ( donc positif ou négatif ) en base 10 et qui le convertit en nombre binaire en complément à deux.

Rappel sur le complément à deux :


	Pour un entier positif :
		le bit de signe est à 0, les bits suivants codent la valeur du nombre.

	Pour un entier négatif :
		on part de la représentation du nombre positif ( avec son bit de signe )
		on inverse tous les bits ( 0 -> 1 et 1 -> 0 )
		on ajoute 1 au nombre obtenu, en ne tenant pas compte de l'éventuelle dernière retenue
			

Pour les conversions d'une base en une autre, vous pouvez utiliser les fonctions intégrées à Python.

Mais il ne faut pas oublier que lors de la conversion base 10 → binaire, Python rajoute des caractères au début de la chaîne représentant le nombre binaire, en l'occurrence les caractères '0b', qui vont vous gêner dans votre travail. Pour les enlever, vous utiliserez la syntaxe suivante :


binaire = bin(base_10)[2:]
				

A l'inverse, lors d'une conversion binaire → base 10, il faut rajouter ces caractères !! Utilisez alors la syntaxe suivante :


base_10 = int('0b'+binaire, 2)
				

Vous testerez le bon fonctionnement de votre script, en lui faisant, réaliser, par exemple, l'addition du nombre entré par l'utilisateur et de son complément à deux ( que doit-on logiquement obtenir ?? ).

Lien vers la RÉPONSE

Addition binaire

Travail à faire :

Écrire un programme qui demande à l’utilisateur d'entrer successivement deux valeurs binaires et qui effectue l'addition binaire de ces deux valeurs

Limitez-vous à l'addition de deux nombres binaires ayant le même nombre de bits ( 8 par exemple ).

Il n'est bien entendu pas question de convertir les valeurs pour en faire la somme, mais bien d'appliquer un algorithme bit-à-bit d'addition binaire...

Attention au problème de la retenue ! Réfléchissez bien sur papier à la manière dont vous allez la "traiter" et quels sont les différents cas possibles sur la valeur des deux bits à additionner.

Algorithme d'addition bit à bit


	b1 ← entrée utilisateur 1ère valeur binaire
	b2 ← entrée utilisateur 2ème valeur binaire

	pour chaque bit de b1 et b2, en partant du LSB jusqu'au MSB :
		si la retenue précédente est nulle :
			alors, selon la valeur des deux bits à additionner, en déduire leur addition et la nouvelle retenue
		sinon si la retenue précédente est à 1 :
			alors, selon la valeur des deux bits à additionner, en déduire leur addition et la nouvelle retenue
			

Quelques indications

Lien vers la RÉPONSE