Üçüncü bir değişken kullanmadan iki sayıyı değiştirin: C, Python Programı

Programlamada dil değiştirme, iki değişkenin değerinin değiştirilmesi anlamına gelir. Değişken bir sayı, dize, liste veya dizi, nesne vb. içerebilir. Değiştirmenin genel yolu, değerleri tutmak için geçici bir değişken kullanmaktır. Örneğin,

İkiyi Değiştir Numbers

İki sayıyı değiştirmenin genel adımları şunlardır:

  • Geçici bir değişken C olarak bildirildi
  • 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.

Geçici bir değişken yardımıyla takas bu şekilde yapılır. Bu yöntem hem tamsayı sayılar hem de kayan sayılar için de işe yarayacaktır.

Aritmetik Denklemi Kullanarak Değiştirme

Bildiğimiz gibi takas, iki nesnenin, alanın veya değişkenin içeriğini değiştirmek anlamına gelir. Aritmetik işlem kullanarak takas, takas işleminin matematiksel denklemi (yani toplama ve çıkarma) kullanarak gerçekleştirilmesi anlamına gelir.

Bize iki sayı verilirse ve geçici bir değişken kullanmadan yer değiştirmemiz istenirse, o zaman üç aritmetik denklem kullanarak sayıları yer değiştirebiliriz.

Aritmetik işlemi kullanarak sayıları değiştirmek için sözde kod:

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

                  Yani A'nın şimdiki değeri 20+30 = 50

Durum 2:    B = AB

                   Şimdi B = 50-30 = 20
                   B'de A'nın değerini aldığımızı görebiliriz.

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ı birbiriyle değiştiren 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: 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 Python, aritmetik işlemler yapmamıza bile gerek yok. Şunu kullanabiliriz:

a,b = b,a

Burada a=20, b=30;

Aritmetik Denklemi Kullanarak Değiştirme

Bitwise XOR kullanarak takas yapın Operator

Bu yöntem XOR takası olarak da bilinir. XOR ortalama münhasır VEYA. Bu bitsel işlemde XOR'a giriş olarak iki bit alırız. XOR'dan bir çıktı almak için yalnızca bir girdi 1 olmalıdır. Aksi takdirde çıktı 0 olur. Aşağıdaki tablo A B'nin tüm giriş kombinasyonları için çıktıyı gösterir.

İki sayıyı bitsel işlem kullanarak değiştirmek için XOR işleminin nasıl çalıştığını bilmemiz gerekiyor. İşte A ve B'nin girdi değerleri olduğu XOR için bir tablo.

A B A XOR B
0 0 0
0 1 1
1 0 1
1 1 0

İki girdi aynı değere sahipse, XOR işlemi 0 verir; aksi takdirde 1. Bu örnek için 3 XOR işlemi kullanacağız. Çoğu programlama dilinde, XOR “^” olarak gösterilir.

A=4 (İkili olarak = 0100) ve B=7(İkili olarak, 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 yapmak için AND, OR ve Compliment gibi Bitwise işlemlerini kullanacağız. Adımlara geçmeden önce, "Compliment"a hızlıca bir göz atalım.

1'in tümleyeni, 0'ın tamamını 1'e ve 1'i de 0'a değiştirmek anlamına gelir. Bir örnek verelim.

  • Bir ondalık sayı olan 23 sayısını varsayalım.
  • İkiliye dönüştürmek 10111'in kullanımını sağlar. Yalnızca 5 bit vardır, ancak bilgisayar sayıyı 8,16,32,64 .. bitlerde saklar. O halde İkilinin önüne sıfır ekleyelim. Sayının orijinal değerini değiştirmez. Böylece olacak 00010111.
  • Bildiğimiz gibi, 1'in iltifatı, tüm 0'ı 1'e ve 1'i 0'a değiştirmek anlamına gelir, böylece 1'in tümlemesi tekrar yapılır. 00010111 verir 11101000

Bu 1'in tamamlayıcısı çoğu programlama dilinde bu sembolle “~” ile temsil edilir. Bu sembolü herhangi bir tam sayı değerinin veya kayan nokta değerinin önüne koymak, 1'in tamamlayıcısını verecektir.

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 iltifatı = 11101000
  • 2'nin iltifatı:

          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)

                   A = A + B'ye 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

                   B = AB'ye eşdeğerdir

Burada B = A – B

Yukarıdaki tartışmadan, eğer çıkarma yapmamız gerekiyorsa, negatif sayının 2'ye tümleyenini yapıp sonra onu ekliyoruz.

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

                   A = AB'ye 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 tamamlanmış oldu.

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ünürse, sonsuz olur ve bilgisayar sayı sistemi onu 32 veya 64 bitte tutamaz.

Tam sayı gösterimi
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ı olabilir.
  • İki negatif sayının toplamı pozitif olur. Çünkü işaret biti pozitif bir sayı anlamına gelen 0 olabilir.