Python Programme permettant d'échanger deux nombres sans utiliser de troisième variable
⚡ Résumé intelligent
Échangerping Deux nombres sans troisième variable échangent leurs valeurs par addition et soustraction.traction, l'opérateur XOR bit à bit, ou astuces d'arithmétique bit à bit. Python peut également être échangé directement avec le dépaquetage de tuples.
Les sections ci-dessous couvrent quatre façons d'effectuer un échange sans variable temporaire, ainsi que le dépassement de capacité arithmétique.
Dans les langages de programmation, échangerping L'échange consiste à permuter les valeurs de deux variables. La variable peut contenir un nombre, une chaîne de caractères, une liste, un tableau, un objet, etc. La méthode générale d'échange est la suivante :ping consiste à utiliser une variable temporaire pour stocker des valeurs. Par exemple,
Les étapes générales d'un échangeping deux nombres sont :
- Déclarez une variable temporaire C
- Attribuez la valeur de A à C, ce qui signifie C = A. Maintenant C = 20
- Attribuez la valeur de B à A, donc A = 30
- Attribuez la valeur de C à B, donc B = 20, car C a la valeur 20.
Voici comment échangerping Cela se fait à l'aide d'une variable temporaire, et cela fonctionne aussi bien pour les nombres entiers que pour les nombres à virgule flottante.
Échanger à l'aide de l'équation arithmétique
Comme nous le savons, échangeping L'échange consiste à permuter le contenu de deux objets, champs ou variables. L'échange par opération arithmétique consiste à effectuer cet échange à l'aide d'une équation mathématique, c'est-à-dire une addition et une soustraction.traction.
Si l'on nous donne deux nombres et qu'on nous demande de les échanger sans utiliser de variable temporaire, alors, en utilisant trois équations arithmétiques, nous pouvons échanger les nombres.
Pseudocode pour l'échangeping nombres utilisant une opération arithmétique :
A = A + B B = A - B A = A - B
Supposons que nous ayons deux nombres, A = 20 et B = 30.
Condition 1: A = A+B
Donc, la valeur actuelle de A est 20 + 30 = 50
Condition 2: B = AB
Maintenant, B = 50-30 = 20
Nous pouvons constater que nous avons obtenu la valeur de A dans B.
Condition 3: A = AB
Finalement, A = 50-20 = 30
A a la valeur initiale de B.
Nous avons donc simplement échangé les numéros.
Voici le programme pour échanger deux nombres en C.C++:
#include<stdio.h> int main() { int a, b; printf("Enter value of A: "); scanf("%d", & a); printf("Enter value of B: "); scanf("%d", & b); printf("A = %d, B = %d", a, b); a = a + b; b = a - b; a = a - b; printf("\nNow, A = %d, B = %d", a, b); }
Sortie :
Enter value of A: 20 Enter value of B: 30 A = 20 , B = 30 Now, A = 30 , B = 20
Programme en Python:
a = int(input("Enter value of A: ")) b = int(input("Enter value of B: ")) print("A = {} and B = {}".format(a, b)) a = a + b b = a - b a = a - b print("Now, A = {} and B = {}".format(a, b))
Sortie :
Enter value of A: 20 Enter value of B: 30 A = 20 , B = 30 Now, A = 30 , B = 20
Maintenant en Python, nous n'avons même pas besoin d'effectuer d'opérations arithmétiques. Nous pouvons utiliser :
une,b = b,une
Voici une démonstration où a=20, b=30 ;
Échange à l'aide de Bitwise XOR Operator
Cette méthode est également connue sous le nom d'échange XOR. XOR signifie OU exclusif. Cette opération bit à bit utilise deux bits comme entrées. Pour obtenir une sortie, une seule entrée doit être à 1. Sinon, la sortie sera à 0. Le tableau suivant présente la sortie pour toutes les combinaisons possibles des entrées A et B.
Nous devons comprendre le fonctionnement de l'opération XOR pour permuter deux nombres à l'aide d'une opération bit à bit. Voici un tableau récapitulatif de l'opération XOR, où A et B représentent les valeurs d'entrée.
| A | B | A XOR B |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Si deux entrées ont la même valeur, l'opération XOR renvoie 0 ; sinon, 1. Dans cet exemple, nous utiliserons une opération XOR à 3 entrées. Dans la plupart des langages de programmation, l'opérateur XOR est noté « ^ ».
Supposons que A=4 (en binaire = 0100) et B=7 (en binaire, 0111).
Condition 1: UNE = UNE ^ B
| A | 0 | 1 | 0 | 0 |
| B | 0 | 1 | 1 | 1 |
| UNE ^ B | 0 | 0 | 1 | 1 |
Maintenant, A = 0011 (en binaire).
Condition 2: B = A^B
| A | 0 | 0 | 1 | 1 |
| B | 0 | 1 | 1 | 1 |
| UNE ^ B | 0 | 1 | 0 | 0 |
Donc B = 0100, qui était la valeur binaire initiale de A.
Condition 3: A = A^B
| A | 0 | 0 | 1 | 1 |
| B | 0 | 1 | 0 | 0 |
| UNE ^ B | 0 | 1 | 1 | 1 |
Enfin, A = 0111, qui était la valeur binaire équivalente de B.
Programme en C/C++:
#include<stdio.h> int main() { int a, b; printf("Enter value of A: "); scanf("%d", & a); printf("Enter value of B: "); scanf("%d", & b); printf("A = %d, B = %d", a, b); a = a ^ b; b = a ^ b; a = a ^ b; printf("\nNow, A = %d, B = %d", a, b); }
Sortie :
Enter value of A:4 Enter value of B:7 A=4, B=7 Now, A=7, B=4.
Programme en Python:
a = int(input("Enter value of A: ")) b = int(input("Enter value of B: ")) print("A = {} and B = {}".format(a, b)) a = a ^ b b = a ^ b a = a ^ b print("Now, A = {} and B = {}".format(a, b))
Sortie :
Enter the value of A:10
Enter the value of B:15
A=10 and B=15
Now, A=15,B=10.
Échanger Numbers en utilisant l'arithmétique au niveau du bit
Cette méthode est identique à la méthode arithmétique, mais nous utiliserons des opérations bit à bit telles que ET, OU et complément pour effectuer l'addition et la soustraction.traction. Avant de passer aux étapes, jetons un coup d’œil rapide au « complément ».
Le complément à 1 consiste à remplacer tous les 0 par des 1 et les 1 par des 0. Prenons un exemple.
- Prenons comme exemple le nombre 23, un nombre décimal.
- La conversion en binaire nous donne 10111. Il n'y a que 5 bits, mais l'ordinateur stocke les nombres sur 8, 16, 32, 64 bits… Ajoutons donc un zéro devant le nombre binaire. Cela ne changera pas sa valeur initiale. Il deviendra donc 10111. 00010111.
- Comme nous le savons, le complément à 1 consiste à remplacer tous les 0 par des 1 et les 1 par des 0. Il s'agit donc d'effectuer le complément à 1 sur… 00010111 donne 11101000.
Le complément à un est représenté par le symbole « ~ » dans la plupart des langages de programmation. Placer ce symbole avant une valeur entière ou à virgule flottante permet d'obtenir son complément à un.
Et le complément à 2 signifie ajouter un « 1 » binaire au complément à 1. Si nous faisons le complément à 2 du nombre ci-dessus :
- Binaire = 00010111
- Complément à 1 = 11101000
- complément à 2 :
11101000
+ 1
11101001
Ainsi, le complément de 2 est 11101001. C'est le binaire pour -23.
En résumé, pour effectuer le complément à 2 d'un nombre A, cela ressemblera à :
Complément à 2 de A = (~A) + 1
Supposons maintenant que A=8 (binaire 00001000) et B=10 (00001010).
Condition 1: A = (A et B) + (A | B)
Cela équivaut à A = A + B.
A et B = 00001000 et 00001010 = 00001000
Un | B = 00001000 | 00001010 = 00001010
Maintenant, 00001000 + 00001010 = 00010010 (décimal 18)
Donc A = 18
Condition 2: B = A + (~B) + 1
Cela équivaut à B = AB
Ici, B = A – B
D'après la discussion précédente, si nous devons effectuer une sous-routinetracPour cela, on calcule le complément à deux du nombre négatif, puis on l'ajoute.
Donc -B = ~B + 1
Maintenant, B = 00010010 + (11110101) + 1 = 00001000
La valeur de B est équivalente au nombre décimal 8, qui était la valeur initiale.
Condition 3: A = A + (~B) + 1
Cela équivaut à A = AB
Maintenant, A = 00010010 + 11110111 + 1
A = 00001010 (équivalent au nombre décimal 10)
Finalement, A a obtenu la valeur de B. Ainsi, l'échange a eu lieu.ping a été complété.
Programme en C/C++:
#include<stdio.h> int main() { int a, b; printf("Enter value of A: "); scanf("%d", & a); printf("Enter value of B: "); scanf("%d", & b); printf("A = %d, B = %d", a, b); a = (a & b) + (a | b); b = a + ~b + 1; a = a + ~b + 1; printf("\nNow, A = %d, B = %d", a, b); }
Sortie :
Enter the value of A: 8 Enter the value of B:10 A=8, B=10 Now, A=10, B=8
Programme en Python:
a = int(input("Enter value of A: ")) b = int(input("Enter value of B: ")) print("A = {} and B = {}".format(a, b)) a = (a & b) + (a | b) b = a + ~b + 1 a = a + ~b + 1 print("Now, A = {} and B = {}".format(a, b))
Sortie :
Enter the value of A: 25 Enter the value of B: 25 A = 25 and B = 25 Now, A = 25 and B = 25
Qu’est-ce que le débordement arithmétique ?
Le terme « dépassement de capacité » signifie le dépassement d'une limite. Un dépassement de capacité arithmétique se produit lorsque le résultat d'une opération arithmétique excède la capacité de représentation numérique de l'architecture de l'ordinateur. Par exemple, si un nombre est divisé par zéro, il devient infini et le système de numération de l'ordinateur ne peut pas le contenir sur 32 ou 64 bits.
Représentation de nombres entiers dans un système 32 bits
La conséquence du débordement arithmétique peut être :
- L'addition de deux nombres positifs devient négative, car le bit de signe peut devenir 1, ce qui signifie un nombre négatif.
- L'addition de deux nombres négatifs devient positive, car le bit de signe peut devenir 0, ce qui signifie un nombre positif.




