Python Üçüncü bir değişken kullanmadan iki sayıyı değiştiren program.
⚡ Akıllı Özet
takasping Üçüncü bir değişken olmaksızın iki sayı, aritmetik toplama ve çıkarma işlemleri kullanılarak değerlerini yerinde değiştirir.tracBit tabanlı XOR operatörü veya bit tabanlı aritmetik hileler. Python Ayrıca, demet açma işlemiyle doğrudan da değiştirilebilir.
Aşağıdaki bölümlerde geçici değişken kullanmadan takas yapmanın dört yolu ve aritmetik taşma sorunu ele alınmaktadır.
Programlama dillerinde, takasping İki değişkenin değerlerini değiştirmek anlamına gelir. Değişken bir sayı, dize, liste veya dizi, nesne vb. içerebilir. Değiştirmenin genel yolu şöyledir:ping Geçici bir değişken kullanarak değerleri saklamak mümkündür. Örneğin,
Takasın genel adımlarıping İki sayı şöyledir:
- Geçici bir değişken C tanımlayın.
- A'nın değerini C'ye atayın, yani C = A. Şimdi C = 20
- B'nin değerini A'ya atayın, yani A = 30
- C'nin değerini B'ye atayın, yani B = 20, çünkü C'nin değeri 20'dir.
Takas işlemi işte böyle yapılır.ping Bu işlem geçici bir değişken yardımıyla yapılır ve hem tamsayılar hem de ondalık sayılar için geçerlidir.
Aritmetik Denklemi Kullanarak Değiştirme
Bildiğimiz gibi, takasping İki nesnenin, alanın veya değişkenin içeriğini değiştirmek anlamına gelir. Aritmetik işlem kullanarak değiştirme, matematiksel bir denklem kullanarak, yani toplama ve çıkarma yoluyla değiştirme işlemini gerçekleştirmek demektir.tracyon.
Bize iki sayı verilip, geçici bir değişken kullanmadan yer değiştirmemiz isteniyorsa, üç aritmetik denklem kullanarak sayıları değiştirebiliriz.
takas için sözde kodping Aritmetik işlem kullanarak sayılar:
A = A + B B = A - B A = A - B
A = 20 ve B = 30 olmak üzere iki sayımız olduğunu varsayalım.
Durum 1: bir = A+B
Dolayısıyla, A'nın mevcut değeri 20+30 = 50'dir.
Durum 2: B = AB
Şimdi B = 50-30 = 20
A'nın değerini B'de bulduğumuzu görebiliyoruz.
Durum 3: bir = AB
Son olarak A = 50-20 = 30
A, B'nin başlangıç değerine sahiptir.
Yani sayıları değiştirdik.
İşte C dilinde iki sayıyı yer değiştiren program.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); }
Çıktı:
Enter value of A: 20 Enter value of B: 30 A = 20 , B = 30 Now, A = 30 , B = 20
Programda 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))
Çıktı:
Enter value of A: 20 Enter value of B: 30 A = 20 , B = 30 Now, A = 30 , B = 20
Şimdi PythonHatta aritmetik işlemler yapmamıza bile gerek yok. Şunları kullanabiliriz:
a,b = b,a
Burada a=20, b=30 değerlerinin kullanıldığı bir örnek gösterilmiştir;
Bitwise XOR kullanarak takas yapın Operator
Bu yöntem aynı zamanda XOR takası olarak da bilinir. XOR, özel VEYA anlamına gelir. Bu bit tabanlı işlemde XOR'a giriş olarak iki bit alırız. XOR'dan bir çıktı almak için, girişlerden yalnızca birinin 1 olması gerekir. Aksi takdirde, çıktı 0 olur. Aşağıdaki tablo, A ve B girişlerinin tüm kombinasyonları için çıktıyı göstermektedir.
İki sayıyı bit düzeyinde işlem kullanarak değiştirmek için XOR işleminin nasıl çalıştığını bilmemiz gerekiyor. Burada A ve B'nin giriş değerleri olduğu bir XOR tablosu bulunmaktadır.
| A | B | A XOR B |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
İki giriş aynı değere sahipse, XOR işlemi 0 verir; aksi takdirde 1 verir. Bu örnekte, 3'lü XOR işlemi kullanacağız. Çoğu programlama dilinde XOR, "^" ile gösterilir.
A=4 (ikili sistemde = 0100) ve B=7 (ikili sistemde, 0111) olduğunu varsayalım.
Durum 1: bir = bir ^ B
| A | 0 | 1 | 0 | 0 |
| B | 0 | 1 | 1 | 1 |
| bir ^ B | 0 | 0 | 1 | 1 |
Şimdi, A = 0011 (İkili olarak).
Durum 2: B = A^B
| A | 0 | 0 | 1 | 1 |
| B | 0 | 1 | 1 | 1 |
| bir ^ B | 0 | 1 | 0 | 0 |
Yani B = 0100, bu A'nın ilk ikili değeriydi.
Durum 3: bir = A^B
| A | 0 | 0 | 1 | 1 |
| B | 0 | 1 | 0 | 0 |
| bir ^ B | 0 | 1 | 1 | 1 |
Son olarak, B'nin eşdeğer ikili değeri olan A = 0111.
C/'deki programC++:
#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); }
Çıktı:
Enter value of A:4 Enter value of B:7 A=4, B=7 Now, A=7, B=4.
Programda 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))
Çıktı:
Enter the value of A:10
Enter the value of B:15
A=10 and B=15
Now, A=15,B=10.
takas Numbers Bitwise-Aritmetik kullanarak
Bu yöntem aritmetik yöntemle aynıdır, ancak toplama ve çıkarma işlemlerini gerçekleştirmek için VE, VEYA ve tamamlayıcı gibi bit düzeyinde işlemler kullanacağız.tracAdımlara geçmeden önce, "tamamlayıcı" kavramına kısaca bir göz atalım.
Birler tamamlayıcısı, tüm 0'ları 1'e ve tüm 1'leri 0'a çevirmek anlamına gelir. Bir örnek verelim.
- Örneğin, ondalık bir sayı olan 23 sayısını ele alalım.
- İkili sayıya dönüştürdüğümüzde 10111 elde ederiz. Sadece 5 bit var, ancak bilgisayar sayıları 8, 16, 32, 64… bit olarak saklar. Bu yüzden ikili sayının önüne sıfır ekleyelim. Bu, sayının orijinal değerini değiştirmeyecektir. Dolayısıyla, sayı şu hale gelecektir: 00010111.
- Bildiğimiz gibi, 1'in tümleyeni, tüm 0'ları 1'e ve 1'leri 0'a çevirmek anlamına gelir; bu nedenle, 1'in tümleyenini şu şekilde uygulamak: 00010111 verir 11101000.
Bu birler tümleyeni, çoğu programlama dilinde "~" sembolüyle gösterilir. Bu sembolü herhangi bir tamsayı değerinin veya ondalık sayı değerinin önüne koymak, birler tümleyenini verir.
2'nin tümleyeni ise 1'in tümleyenine ikili “1”in eklenmesi anlamına gelir. Yukarıdaki sayının 2'ye tümleyenini yaparsak:
- İkili = 00010111
- 1'in tümleyeni = 11101000
- 2'nin tümleyeni:
11101000
+ 1
11101001
Yani 2'nin tümleyeni 11101001'dir. Bu -23'ün İkilisidir.
Özetle, bir A sayısının 2'ye tümleyenini gerçekleştirmek için şöyle görünecektir:
A'nın 2'ye tümleyeni = (~A) + 1
Şimdi A=8 (ikili 00001000), B=10 (00001010) olduğunu varsayalım.
Durum 1: bir = (A ve B) + (A | B)
Bu, A = A + B ifadesine eşdeğerdir.
A ve B = 00001000 ve 00001010 = 00001000
bir | B = 00001000 | 00001010 = 00001010
Şimdi, 00001000 + 00001010 = 00010010 (ondalık 18)
Yani A = 18
Durum 2: B = Bir + (~B) + 1
Bu, B = AB'ye eşdeğerdir.
Burada B = A – B
Yukarıdaki tartışmadan yola çıkarak, alt işlemleri gerçekleştirmemiz gerekiyorsatracBu durumda, negatif sayıya 2'nin tümleyeni işlemini uygularız ve ardından onu ekleriz.
Yani, -B = ~B + 1
Şimdi, B = 00010010 + (11110101) + 1 = 00001000
B'nin değeri başlangıç değeri olan ondalık 8'e eşdeğerdir.
Durum 3: bir = Bir + (~B) + 1
Bu, A = AB eşitliğine eşdeğerdir.
Şimdi, A = 00010010 + 11110111 + 1
A = 00001010 (ondalık sayı 10'a eşdeğer)
Sonunda A, B'nin değerini aldı. Böylece takas gerçekleşti.ping tamamlanmıştı.
C/'deki programC++:
#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); }
Çıktı:
Enter the value of A: 8 Enter the value of B:10 A=8, B=10 Now, A=10, B=8
Programda 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))
Çıktı:
Enter the value of A: 25 Enter the value of B: 25 A = 25 and B = 25 Now, A = 25 and B = 25
Aritmetik Taşma Nedir?
"Taşma" terimi, sınırı aşmak anlamına gelir. Aritmetik taşma, herhangi bir aritmetik işlemin sonucunun, bilgisayar mimarisinin sayı gösteriminin aralığını veya sınırını aşması anlamına gelir. Örneğin, bir sayı sıfıra bölündüğünde sonsuz olur ve bilgisayar sayı sistemi bunu 32 veya 64 bit içinde tutamaz.
32 bitlik bir sistemde tam sayı gösterimi
Aritmetik taşmanın sonucu şunlar olabilir:
- İki pozitif sayının toplamı negatif olur, çünkü işaret biti 1 olabilir, yani negatif bir sayı elde edilir.
- İki negatif sayının toplamı pozitif olur, çünkü işaret biti 0 olabilir, yani pozitif bir sayı elde edilir.




