Python Programma per scambiare due numeri senza utilizzare una terza variabile
โก Riepilogo intelligente
scambiareping due numeri senza una terza variabile scambiano i loro valori sul posto usando l'addizione aritmetica e la sottrazionetraczione, l'operatore XOR bit a bit, o trucchi di aritmetica bit a bit. Python รจ possibile anche effettuare lo scambio direttamente tramite l'estrazione della tupla.

Le sezioni seguenti illustrano quattro metodi per effettuare scambi senza utilizzare una variabile temporanea, oltre al problema dell'overflow aritmetico.
Nei linguaggi di programmazione, lo scambioping significa scambiare i valori di due variabili. La variabile puรฒ contenere un numero, una stringa, una lista o un array, un oggetto, ecc. Il modo generale di scambioping consiste nell'utilizzare una variabile temporanea per memorizzare i valori. Ad esempio,
Le fasi generali dello scambioping due numeri sono:
- Dichiarare una variabile temporanea C
- Assegna il valore di A a C, ovvero C = A. Ora C = 20
- Assegna il valore di B ad A, quindi A = 30
- Assegna il valore di C a B, quindi B = 20, poichรฉ C ha il valore 20.
Ecco come si scambiaping Questo viene fatto con l'aiuto di una variabile temporanea e funziona sia per numeri interi che per numeri decimali.
Scambia utilizzando l'equazione aritmetica
Come sappiamo, lo scambioping significa scambiare il contenuto di due oggetti, campi o variabili. Scambiare usando un'operazione aritmetica significa eseguire lo scambio usando un'equazione matematica, cioรจ addizione e sottrazione.traczione.
Se ci vengono dati due numeri e ci viene chiesto di scambiarli senza usare una variabile temporanea, allora possiamo scambiarli utilizzando tre equazioni aritmetiche.
Pseudocodice per lo scambioping numeri utilizzando un'operazione aritmetica:
A = A + B B = A - B A = A - B
Supponiamo di avere due numeri, A = 20 e B = 30.
Condizione 1: A = A+B
Quindi, il valore attuale di A รจ 20+30 = 50
Condizione 2: B = AB
Ora, B = 50-30 = 20
Possiamo constatare di aver ottenuto il valore di A in B.
Condizione 3: A = AB
Infine, A = 50-20 = 30
A ha il valore iniziale di B.
Quindi abbiamo semplicemente scambiato i numeri.
Ecco il programma per scambiare due numeri in 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); }
Produzione:
Enter value of A: 20 Enter value of B: 30 A = 20 , B = 30 Now, A = 30 , B = 20
Programma in 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))
Produzione:
Enter value of A: 20 Enter value of B: 30 A = 20 , B = 30 Now, A = 30 , B = 20
Ora in Python, non abbiamo nemmeno bisogno di eseguire operazioni aritmetiche. Possiamo usare:
a,b = b,a
Ecco una dimostrazione in cui a=20, b=30;
Scambio tramite XOR bit a bit Operator
Questo metodo รจ anche noto come scambio XOR. XOR significa OR esclusivo. In questa operazione bit a bit, utilizziamo due bit come input per l'operazione XOR. Per ottenere un output dall'operazione XOR, รจ sufficiente che uno solo degli input sia 1. Altrimenti, l'output sarร 0. La tabella seguente mostra l'output per tutte le combinazioni di input A e B.
Dobbiamo capire come funziona l'operazione XOR per scambiare due numeri utilizzando l'operazione bit a bit. Ecco una tabella per l'operazione XOR, dove A e B sono i valori di input.
| A | B | A XOR B |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Se due input hanno lo stesso valore, l'operazione XOR restituisce 0; altrimenti, 1. In questo esempio, utilizzeremo un'operazione XOR a 3. Nella maggior parte dei linguaggi di programmazione, l'operazione XOR รจ indicata con il simbolo "^".
Supponiamo che A=4 (in binario = 0100) e B=7 (in binario, 0111)
Condizione 1: A = A^B
| A | 0 | 1 | 0 | 0 |
| B | 0 | 1 | 1 | 1 |
| A^B | 0 | 0 | 1 | 1 |
Ora, A = 0011 (in binario).
Condizione 2: B = A^B
| A | 0 | 0 | 1 | 1 |
| B | 0 | 1 | 1 | 1 |
| A^B | 0 | 1 | 0 | 0 |
Quindi B = 0100, che era il valore binario iniziale di A.
Condizione 3: A = A^B
| A | 0 | 0 | 1 | 1 |
| B | 0 | 1 | 0 | 0 |
| A^B | 0 | 1 | 1 | 1 |
Infine, A = 0111, che era il valore binario equivalente di B.
Programma in 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); }
Produzione:
Enter value of A:4 Enter value of B:7 A=4, B=7 Now, A=7, B=4.
Programma in 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))
Produzione:
Enter the value of A:10
Enter the value of B:15
A=10 and B=15
Now, A=15,B=10.
scambiare Numbers utilizzando l'aritmetica bit a bit
Questo metodo รจ lo stesso del metodo aritmetico, ma useremo operazioni bit a bit come AND, OR e complemento per eseguire addizioni e sottrazioni.tracPrima di passare ai passaggi, diamo una rapida occhiata al concetto di "complemento".
Il complemento a uno significa trasformare tutti gli 0 in 1 e tutti gli 1 in 0. Facciamo un esempio.
- Supponiamo di considerare il numero 23 come un numero decimale.
- La conversione in binario ci dร 10111. Ci sono solo 5 bit, ma il computer memorizza i numeri in 8, 16, 32, 64... bit. Quindi aggiungiamo uno zero davanti al binario. Questo non cambierร il valore originale del numero. Quindi diventerร 00010111.
- Come sappiamo, il complemento a 1 significa cambiare tutti gli 0 in 1 e tutti gli 1 in 0, quindi eseguire il complemento a 1 su 00010111 dร 11101000.
Il complemento a uno รจ rappresentato dal simbolo "~" nella maggior parte dei linguaggi di programmazione. Anteponendo questo simbolo a qualsiasi valore intero o a virgola mobile si ottiene il complemento a uno.
E complemento a 2 significa aggiungere โ1โ binario al complemento a 1. Se facciamo il complemento a 2 al numero sopra:
- Binario = 00010111
- Complemento a 1 = 11101000
- Complemento a due:
11101000
+ 1
11101001
Quindi, il complemento a 2 รจ 11101001. Questo รจ il binario per -23.
In sintesi, per eseguire il complemento a 2 di un numero A, sarร simile a:
Complemento a 2 di A = (~A) + 1
Ora supponiamo che A=8 (binario 00001000), B=10 (00001010)
Condizione 1: A = (A e B) + (A | B)
ร equivalente a A = A + B.
A e B = 00001000 e 00001010 = 00001000
A | B = 00001000 | 00001010 = 00001010
Ora, 00001000 + 00001010 = 00010010 (decimale 18)
Quindi A = 18
Condizione 2: B = LA + (~B) + 1
ร equivalente a B = AB
Qui, B = A โ B
Dalla discussione precedente, se dobbiamo eseguire un subtracIn questo caso, eseguiamo il complemento a due del numero negativo e poi lo aggiungiamo.
Quindi, -B = ~B + 1
Ora, B = 00010010 + (11110101) + 1 = 00001000
Il valore di B รจ equivalente al decimale 8, che era il valore iniziale.
Condizione 3: LA = LA + (~B) + 1
ร equivalente ad A = AB
Ora, A = 00010010 + 11110111 + 1
A = 00001010 (equivalente a 10 decimale)
Infine, A ha ottenuto il valore di B. Quindi, lo scambioping รจ stato completato.
Programma in 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); }
Produzione:
Enter the value of A: 8 Enter the value of B:10 A=8, B=10 Now, A=10, B=8
Programma in 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))
Produzione:
Enter the value of A: 25 Enter the value of B: 25 A = 25 and B = 25 Now, A = 25 and B = 25
Che cos'รจ l'overflow aritmetico?
Il termine overflow significa superamento del limite. L'overflow aritmetico si verifica quando il risultato di un'operazione aritmetica supera l'intervallo o il limite della rappresentazione numerica dell'architettura del computer. Ad esempio, se un numero viene diviso per zero, diventa infinito e il sistema numerico del computer non puรฒ rappresentarlo con 32 o 64 bit.
Rappresentazione di numeri interi in un sistema a 32 bit
La conseguenza dell'overflow aritmetico puรฒ essere:
- La somma di due numeri positivi dร come risultato un numero negativo, perchรฉ il bit di segno potrebbe diventare 1, ovvero un numero negativo.
- La somma di due numeri negativi dร come risultato un numero positivo, perchรฉ il bit di segno potrebbe diventare 0, indicando quindi un numero positivo.



