Python Program za zamjenu dva broja bez korištenja treće varijable
⚡ Pametni sažetak
Razmijenitiping Dva broja bez treće varijable zamjenjuju svoje vrijednosti na mjestu koristeći aritmetičko zbrajanje i oduzimanjetraccija, bitni XOR operator ili bitni aritmetički trikovi. Python također se može izravno zamijeniti raspakiranjem tuplea.

U donjim odjeljcima opisana su četiri načina zamjene bez privremene varijable, plus aritmetičko prekoračenje.
U programskim jezicima, zamjenaping znači zamjenu vrijednosti dviju varijabli. Varijabla može sadržavati broj, niz znakova, popis ili niz, objekt itd. Opći način zamjeneping je korištenje privremene varijable za pohranjivanje vrijednosti. Na primjer,
Opći koraci zamjeneping dva broja su:
- Deklariraj privremenu varijablu C
- Dodijelite vrijednost A do C, što znači C = A. Sada je C = 20
- Dodijelite vrijednost B A, tako da je A = 30
- Dodijelite vrijednost C B-u, tako da je B = 20, jer C ima vrijednost 20.
Ovako se zamjenjujeping se vrši uz pomoć privremene varijable i radi i za cijele i za brojeve s pomičnim zarezom.
Zamijenite pomoću aritmetičke jednadžbe
Kao što znamo, zamjenaping znači zamijeniti sadržaj dvaju objekata ili polja ili varijabli. Zamjena pomoću aritmetičke operacije znači izvođenje zamjene pomoću matematičke jednadžbe, tj. zbrajanja i oduzimanjatraction.
Ako nam se zadaju dva broja i zatraži se da ih zamijenimo bez korištenja privremene varijable, tada pomoću tri aritmetičke jednadžbe možemo zamijeniti brojeve.
Pseudokod za zamjenuping brojevi pomoću aritmetičke operacije:
A = A + B B = A - B A = A - B
Pretpostavimo da imamo dva broja, A = 20 i B = 30.
Uvjet 1: A = A+B
Dakle, trenutna vrijednost A je 20 + 30 = 50
Uvjet 2: B = AB
Sada, B = 50-30 = 20
Vidimo da smo dobili vrijednost A u B.
Uvjet 3: A = AB
Konačno, A = 50-20 = 30
A ima početnu vrijednost B.
Dakle, samo smo zamijenili brojeve.
Evo programa za zamjenu dva broja u 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); }
Izlaz:
Enter value of A: 20 Enter value of B: 30 A = 20 , B = 30 Now, A = 30 , B = 20
Programirajte u 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))
Izlaz:
Enter value of A: 20 Enter value of B: 30 A = 20 , B = 30 Now, A = 30 , B = 20
sada u Python, ne moramo čak ni izvoditi aritmetičke operacije. Možemo koristiti:
a,b = b,a
Evo demonstracije gdje je a=20, b=30;
Zamijenite koristeći bitwise XOR Operahumka
Ova metoda je također poznata kao XOR zamjena. XOR znači isključivo ILI. U ovoj bitnoj operaciji uzimamo dva bita kao ulaze u XOR. Da bismo dobili jedan izlaz iz XOR-a, samo jedan ulaz mora biti 1. Inače će izlaz biti 0. Sljedeća tablica prikazuje izlaz za sve kombinacije ulaza A i B.
Moramo znati kako XOR operacija funkcionira za zamjenu dva broja pomoću bitne operacije. Evo tablice za XOR gdje su A i B ulazne vrijednosti.
| A | B | A XOR B |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Ako dva ulaza imaju istu vrijednost, tada XOR operacija daje 0; inače, 1. U ovom primjeru koristit ćemo XOR operaciju s 3 znaka. U većini programskih jezika, XOR se označava kao "^".
Pretpostavimo da je A=4 (u binarnom sustavu = 0100) i B=7 (u binarnom sustavu, 0111)
Uvjet 1: A = A ^ B
| A | 0 | 1 | 0 | 0 |
| B | 0 | 1 | 1 | 1 |
| A ^ B | 0 | 0 | 1 | 1 |
Sada, A = 0011 (u binarnom obliku).
Uvjet 2: B = A^B
| A | 0 | 0 | 1 | 1 |
| B | 0 | 1 | 1 | 1 |
| A ^ B | 0 | 1 | 0 | 0 |
Dakle, B = 0100, što je bila početna binarna vrijednost A.
Uvjet 3: A = A^B
| A | 0 | 0 | 1 | 1 |
| B | 0 | 1 | 0 | 0 |
| A ^ B | 0 | 1 | 1 | 1 |
Konačno, A = 0111, što je bila ekvivalentna binarna vrijednost B.
Program u 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); }
Izlaz:
Enter value of A:4 Enter value of B:7 A=4, B=7 Now, A=7, B=4.
Programirajte u 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))
Izlaz:
Enter the value of A:10
Enter the value of B:15
A=10 and B=15
Now, A=15,B=10.
Razmijeniti Numbers koristeći Bitwise-Aritmetic
Ova metoda je ista kao aritmetička metoda, ali ćemo koristiti bitovne operacije poput I, ILI i komplementa za izvođenje zbrajanja i oduzimanja.tracPrije nego što prijeđemo na korake, ukratko ćemo pogledati „komplement“.
Komplement 1 znači promjenu svih 0 u 1 i 1 u 0. Uzmimo primjer.
- Pretpostavimo broj 23, decimalni broj.
- Pretvaranjem u binarni broj dobivamo 10111. Postoji samo 5 bitova, ali računalo pohranjuje brojeve u 8, 16, 32, 64... bita. Dakle, dodajmo nulu ispred binarnog broja. To neće promijeniti izvornu vrijednost broja. Dakle, postat će 00010111.
- Kao što znamo, komplement 1 znači promjenu svih 0 u 1 i 1 u 0, pa se komplement 1 izvodi preko 00010111 daje 11101000.
Ovaj komplement jedinice predstavljen je simbolom "~" u većini programskih jezika. Stavljanjem ovog simbola ispred bilo koje cjelobrojne vrijednosti ili vrijednosti s pomičnim zarezom dobit ćete komplement jedinice.
A komplement 2 znači dodavanje binarne “1” komplementu 1. Ako napravimo komplement 2 na gornji broj:
- Binarno = 00010111
- 1-ov komplement = 11101000
- Komplement broja 2:
11101000
+ 1
11101001
Dakle, komplement broja 2 je 11101001. Ovo je binarni broj za -23.
Ukratko, za izvođenje komplementa 2 broja A, izgledat će ovako:
2 komplement od A = (~A) + 1
Sada pretpostavimo da je A=8 (binarno 00001000), B=10 (00001010)
Uvjet 1: A = (A & B) + (A | B)
To je ekvivalentno kao A = A + B.
A & B = 00001000 & 00001010 = 00001000
A | B = 00001000 | 00001010 = 00001010
Sada, 00001000 + 00001010 = 00010010 (decimalno 18)
Dakle, A = 18
Uvjet 2: B = A + (~B) + 1
To je ekvivalentno B = AB
Ovdje je B = A – B
Iz gornje rasprave, ako trebamo izvršiti podtracciju, izvodimo komplement negativnog broja s 2, a zatim ga zbrajamo.
Dakle, -B = ~B + 1
Sada, B = 00010010 + (11110101) + 1 = 00001000
B-ova vrijednost je ekvivalentna decimalnom broju 8, što je bila početna vrijednost.
Uvjet 3: A = A + (~B) + 1
To je ekvivalentno A = AB
Sada, A = 00010010 + 11110111 + 1
A = 00001010 (ekvivalent decimalnom broju 10)
Konačno, A je dobio vrijednost B. Dakle, zamjenaping bio dovršen.
Program u 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); }
Izlaz:
Enter the value of A: 8 Enter the value of B:10 A=8, B=10 Now, A=10, B=8
Programirajte u 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))
Izlaz:
Enter the value of A: 25 Enter the value of B: 25 A = 25 and B = 25 Now, A = 25 and B = 25
Što je aritmetičko prekoračenje?
Pojam prelijevanja znači prekoračenje granice. Aritmetičko prelijevanje znači da rezultat bilo koje aritmetičke operacije premašuje raspon ili granicu brojevne reprezentacije računalne arhitekture. Na primjer, ako se broj podijeli s nulom, postaje beskonačan i računalni brojevni sustav ga ne može pohraniti u 32 ili 64 bita.
Prikaz cjelobrojnih brojeva u 32-bitnom sustavu
Posljedica aritmetičkog preljeva može biti:
- Zbrajanje dvaju pozitivnih brojeva postaje negativno, jer bi bit predznaka mogao postati 1, što znači negativan broj.
- Zbrajanje dva negativna broja postaje pozitivno, jer bit predznaka može postati 0, što znači pozitivan broj.



