python additionner 2 nombres positive sans utiliser operateur - Python - Programmation
Marsh Posté le 09-07-2024 à 15:11:12
Faut poser la question à chatgpt.
Citation : |
Code :
|
Citation : |
Marsh Posté le 09-07-2024 à 15:32:55
"Décalage à gauche (<< ) : La retenue est décalée d'un bit vers la gauche pour l'ajouter à la prochaine position significative. "
pouvez vous m'expliquer cette ligne
Marsh Posté le 09-07-2024 à 15:50:00
admettons on a a est 25 et b est 37
25 en binaire est 110010
37 en binaire est 100101
25 & 37 est 100000 en décimal 32
et
25 en binaire est 110010
37 en binaire est 100101
25 ^ 37 est 110111 en décimal 55
à partir de là je ne comprend pas
Marsh Posté le 09-07-2024 à 16:12:02
non, tes valeurs binaires sont fausses.
Dans l'exemple que tu donnes, ça donne ça :
|
le carry = a & b , c est pour détecter les retenues 1 + 1 en binaire ca fait une retenue, alors que 0 + 0, 0 +1 et 1 + 0 non. Le 0 + 0 , on se fiche du resultat , et le 1 + 0 Et 0 +1 , ca donne 1. Donc carry contient la position des retenues
le a = a ^b, ca fait la somme seulement sur les bits sans retenue. Donc ici :
a^b = 25 ^37 = 011001 ^ 100101 , ca fait qu'on ajoute 011001 ^ 100101 mais pas 011001 ^ 100101. Par contre , la retenue a été détectée et est stockée dans carry .
Ensuite b prend la valeur de toutes les retenues décalée de 1, ici, il n'y en a qu'une, le 000001 qui se transforme en 000010 , car 000001 + 000001 ca fait 000010
Ensuite, on refait un tour de boucle et on recommence, est ce que ca génère des retenues, etc... jusqu'à ce que b vaille 0.
Voilà un autre exemple avec des nombres plus grands :
iteration 0 |
Marsh Posté le 09-07-2024 à 16:13:58
plus précisément :
000001 + 000001 , c'est 000001 x 2 , et x2 c'est un décalage vers la gauche donc << 1, donc 000010
Marsh Posté le 09-07-2024 à 14:37:52
Bonjour
En python
Comment additionner 2 nombres positives sans utiliser l'opérateur plus
Veuillez m'aider s'il vous plait