Échanger deux nombres sans utiliser une troisième variable : C, Python Programme
En programmation, l’échange de langage signifie échanger la valeur de deux variables. La variable peut contenir un nombre, une chaîne, une liste ou un tableau, un objet, etc. La méthode générale d'échange consiste à utiliser une variable temporaire pour contenir les valeurs. Par exemple,
Les étapes générales pour échanger deux numéros sont les suivantes :
- Déclaré 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.
C'est ainsi que l'échange se fait à l'aide d'une variable temporaire. Cette méthode fonctionnera également pour les nombres entiers et les nombres flottants.
Échanger à l'aide de l'équation arithmétique
Comme nous le savons, échanger signifie échanger le contenu de deux objets, champs ou variables. L'échange à l'aide d'une opération arithmétique signifie effectuer l'opération d'échange à l'aide de l'équation mathématique, c'est-à-dire l'addition et la soustraction.
Si on nous donne deux nombres et qu'on nous demande d'échanger sans utiliser de variable temporaire, alors en utilisant trois équations arithmétiques, nous pouvons échanger les nombres.
Pseudocode pour échanger des nombres à l'aide d'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
Ainsi, la valeur actuelle de A est 20+30 = 50
Condition 2: B = AB
Maintenant, B = 50-30 = 20
Nous pouvons voir 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 des 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. Nous prenons deux bits comme entrées du XOR dans cette opération au niveau du bit. Pour obtenir une sortie de XOR, une seule entrée doit être 1. Sinon, la sortie sera 0. Le tableau suivant montre la sortie pour toutes les combinaisons d'entrée A B.
Nous devons savoir comment fonctionne l'opération XOR pour échanger deux nombres à l'aide de l'opération au niveau du bit. Voici un tableau pour XOR où A et B sont 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, alors l'opération XOR donne 0 ; sinon, 1. Pour cet exemple, nous utiliserons une opération 3 XOR. Dans la plupart des langages de programmation, XOR est noté « ^ ».
Supposons 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 la même que la méthode arithmétique, mais nous utiliserons des opérations au niveau du bit telles que AND, OR et Compliment pour effectuer des additions et des soustractions. Avant de passer aux étapes, parcourons rapidement « Compliment ».
Le complément à 1 signifie changer tous les 0 en 1 et les 1 en 0. Prenons un exemple.
- Supposons un nombre 23, un nombre décimal.
- La conversion en binaire donne l'utilisation de 10111. Il n'y a que 5 bits, mais l'ordinateur stocke le numéro en 8,16,32,64 .. bits. Ajoutons donc zéro devant le binaire. Cela ne changera pas la valeur originale du nombre. Cela deviendra donc 00010111.
- Comme nous le savons, le complément à 1 signifie changer tous les 0 en 1 et les 1 en 0, donc effectuer le complément à 1 sur 00010111 donne 11101000
Le complément de ce 1 est représenté par « ~ » ce symbole dans la plupart des langages de programmation. Placer ce symbole avant toute valeur entière ou valeur à virgule flottante donnera le complément à 1.
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
- Le compliment de 1 = 11101000
- Le compliment de 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 A=8 (binaire 00001000), B=10(00001010)
Condition 1: A = (A et B) + (A | B)
C'est équivalent à 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
Son équivalent à B = AB
Ici, B = A – B
D'après la discussion ci-dessus, si nous devons effectuer une soustraction, nous effectuons le complément à 2 du nombre négatif, puis l'ajoutons.
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
C'est l'équivalent de 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 était terminé.
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ébordement signifie dépasser la limite. Le dépassement arithmétique signifie que le résultat de toute opération arithmétique dépasse la plage ou la limite de la représentation numérique de l'architecture informatique. Par exemple, si un nombre est divisé par zéro, il devient infini et le système de numérotation informatique ne peut pas le contenir en 32 ou 64 bits.
La conséquence du débordement arithmétique peut être :
- L'addition de deux nombres positifs devient négatif. Parce que le bit de signe peut devenir 1, ce qui signifie un nombre négatif.
- L'addition de deux nombres négatifs devient positif. Parce que le bit de signe peut devenir 0, ce qui signifie un nombre positif.