Python Program for å bytte om to tall uten å bruke den tredje variabelen
⚡ Smart oppsummering
Byttping To tall uten en tredje variabel bytter verdier ved hjelp av aritmetisk addisjon og subtraksjontracsjon, den bitvise XOR-operatoren eller bitvis-aritmetiske triks. Python kan også bytte direkte med tuple-utpakking.

Avsnittene nedenfor dekker fire måter å bytte uten en midlertidig variabel, pluss aritmetisk overløp.
I programmeringsspråk, swapping betyr å bytte verdiene til to variabler. Variabelen kan inneholde et tall, en streng, en liste eller en matrise, et objekt osv. Den generelle måten å bytte påping er å bruke en midlertidig variabel til å holde verdier. For eksempel,
De generelle trinnene for bytteping to tall er:
- Deklarer en midlertidig variabel C
- Tilordne verdien av A til C, som betyr C = A. Nå er C = 20
- Tilordne verdien av B til A, så A = 30
- Tilordne verdien av C til B, så B = 20, ettersom C har verdien 20.
Slik bytter duping gjøres ved hjelp av en midlertidig variabel, og den fungerer for både heltall og flyttall.
Bytt med aritmetisk ligning
Som vi vet, bytteping betyr å bytte om innholdet i to objekter, felt eller variabler. Å bytte ved hjelp av en aritmetisk operasjon betyr å utføre byttet ved hjelp av en matematisk ligning, f.eks. addisjon og subtraksjon.tracsjon.
Hvis vi får to tall og blir bedt om å bytte uten å bruke en midlertidig variabel, kan vi bytte tallene ved å bruke tre aritmetiske ligninger.
Pseudokode for bytteping tall ved hjelp av en aritmetisk operasjon:
A = A + B B = A - B A = A - B
La oss anta at vi har to tall, A = 20 og B = 30.
Tilstand 1: A = A+B
Så den nåværende verdien av A er 20 + 30 = 50
Tilstand 2: B = AB
Nå er B = 50-30 = 20
Vi kan se at vi har verdien av A i B.
Tilstand 3: A = AB
Til slutt, A = 50-20 = 30
A har startverdien til B.
Så vi byttet bare tallene.
Her er programmet for å bytte om to tall i 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); }
Utgang:
Enter value of A: 20 Enter value of B: 30 A = 20 , B = 30 Now, A = 30 , B = 20
Program i 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))
Utgang:
Enter value of A: 20 Enter value of B: 30 A = 20 , B = 30 Now, A = 30 , B = 20
Nå i Python, trenger vi ikke engang å utføre aritmetiske operasjoner. Vi kan bruke:
a,b = b,a
Her er en demonstrasjon der a=20, b=30;
Bytt med Bitwise XOR Operator
Denne metoden er også kjent som XOR-swap. XOR betyr eksklusiv ELLER. Vi tar to bits som innganger til XOR i denne bitvise operasjonen. For å få én utgang fra XOR, må bare én inngang være 1. Ellers vil utgangen være 0. Tabellen nedenfor viser utgangen for alle kombinasjoner av inngang A og B.
Vi må vite hvordan XOR-operasjonen fungerer for å bytte om to tall ved hjelp av den bitvise operasjonen. Her er en tabell for XOR hvor A og B er inngangsverdiene.
| A | B | A XOR B |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Hvis to innganger har samme verdi, gir XOR-operasjonen 0; ellers 1. I dette eksemplet bruker vi en 3 XOR-operasjon. I de fleste programmeringsspråk er XOR betegnet som «^».
La oss anta A=4 (i binær = 0100) og B=7 (i binær, 0111)
Tilstand 1: A = A ^ B
| A | 0 | 1 | 0 | 0 |
| B | 0 | 1 | 1 | 1 |
| A ^ B | 0 | 0 | 1 | 1 |
Nå, A = 0011 (i binær).
Tilstand 2: B = A^B
| A | 0 | 0 | 1 | 1 |
| B | 0 | 1 | 1 | 1 |
| A ^ B | 0 | 1 | 0 | 0 |
Så B = 0100, som var den første binære verdien av A.
Tilstand 3: A = A^B
| A | 0 | 0 | 1 | 1 |
| B | 0 | 1 | 0 | 0 |
| A ^ B | 0 | 1 | 1 | 1 |
Til slutt, A = 0111, som var den ekvivalente binære verdien av B.
Program i 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); }
Utgang:
Enter value of A:4 Enter value of B:7 A=4, B=7 Now, A=7, B=4.
Program i 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))
Utgang:
Enter the value of A:10
Enter the value of B:15
A=10 and B=15
Now, A=15,B=10.
Bytt Numbers ved hjelp av Bitwise-Aritmetic
Denne metoden er den samme som den aritmetiske metoden, men vi bruker bitvise operasjoner som OG, ELLER og komplement for å utføre addisjon og subtraksjontracFør vi går videre til trinnene, la oss raskt se på «komplement».
1-komplement betyr å endre alle 0 til 1 og 1 til 0. La oss ta et eksempel.
- La oss anta tallet 23, et desimaltall.
- Konvertering til binært tall gir oss 10111. Det er bare 5 bit, men datamaskinen lagrer tall i 8, 16, 32, 64 … bit. Så la oss legge til null foran det binære tallet. Det vil ikke endre den opprinnelige verdien av tallet. Så det vil bli 00010111.
- Som vi vet, betyr 1-komplement å endre alle 0-ene til 1 og 1 til 0, så å utføre 1-komplementet over 00010111 gir 11101000.
Dette enerkomplementet er representert med symbolet «~» i de fleste programmeringsspråk. Hvis du setter dette symbolet foran heltallsverdier eller flyttallsverdier, får du enerkomplementet.
Og 2-komplement betyr å legge til binær "1" til 1-komplementet. Hvis vi gjør 2-er komplement til tallet ovenfor:
- Binær = 00010111
- 1-komplement = 11101000
- 2-komplementet:
11101000
+ 1
11101001
Så 2s komplement er 11101001. Dette er binæren for -23.
Oppsummert, for å utføre 2s komplement av et tall A, vil det se slik ut:
2s komplement av A = (~A) + 1
La oss nå anta A=8 (binær 00001000), B=10 (00001010)
Tilstand 1: A = (A & B) + (A | B)
Det tilsvarer A = A + B.
A & B = 00001000 og 00001010 = 00001000
A | B = 00001000 | 00001010 = 00001010
Nå, 00001000 + 00001010 = 00010010 (desimal 18)
Så A = 18
Tilstand 2: B = A + (~B) + 1
Det tilsvarer B = AB
Her er B = A – B
Ut fra diskusjonen ovenfor, hvis vi trenger å utføre subtracI denne stillingen utfører vi 2-komplementet til det negative tallet og legger det deretter til.
Så -B = ~B + 1
Nå er B = 00010010 + (11110101) + 1 = 00001000
Bs verdi tilsvarer desimal 8, som var startverdien.
Tilstand 3: A = A + (~B) + 1
Det tilsvarer A = AB
Nå er A = 00010010 + 11110111 + 1
A = 00001010 (tilsvarer desimal 10)
Til slutt fikk A verdien av B. Dermed ble byttetping var fullført.
Program i 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); }
Utgang:
Enter the value of A: 8 Enter the value of B:10 A=8, B=10 Now, A=10, B=8
Program i 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))
Utgang:
Enter the value of A: 25 Enter the value of B: 25 A = 25 and B = 25 Now, A = 25 and B = 25
Hva er aritmetisk overløp?
Begrepet overløp betyr å overskride grensen. Aritmetisk overløp betyr at resultatet av enhver aritmetisk operasjon overskrider området eller grensen for dataarkitekturens tallrepresentasjon. Hvis for eksempel et tall deles på null, blir det uendelig, og datamaskinens tallsystem kan ikke holde det i 32 eller 64 bits.
Heltallsrepresentasjon i et 32-bits system
Konsekvensen av det aritmetiske overløpet kan være:
- Addisjonen av to positive tall blir negativ, fordi fortegnsbiten kan bli 1, som betyr et negativt tall.
- Addisjonen av to negative tall blir positiv, fordi fortegnsbiten kan bli 0, som betyr et positivt tall.



