Python Program untuk menukar dua angka tanpa menggunakan variabel ketiga.

⚡ Ringkasan Cerdas

Menukarping Dua angka tanpa variabel ketiga bertukar nilai di tempatnya menggunakan penjumlahan dan pengurangan aritmatika.traction, operator XOR bitwise, atau trik aritmatika bitwise. Python juga dapat bertukar secara langsung dengan membongkar tuple.

  • 🔘 Metode klasik: Metode swap konvensional menyimpan satu nilai dalam variabel sementara, yang dihindari oleh teknik-teknik ini.
  • Pertukaran aritmatika: Tukarkan nilai dengan a = a + b, lalu b = a − b, kemudian a = a − b.
  • 🔀 Pertukaran XOR: Terapkan operator XOR bitwise sebanyak tiga kali untuk menukar bilangan bulat tanpa terjadi overflow.
  • 🧮 Aritmatika bitwise: Gunakan operator AND, OR, dan komplemen untuk mereproduksi penjumlahan dan pengurangan.traction.
  • 🐍 Python jalan pintas: Pembongkaran tuple, a, b = b, a, menukar dua nilai apa pun dalam satu baris.
  • 🤖 AI dan data: Pertukaran tuple dan pengindeksan NumPy menyusun ulang elemen array dalam persiapan pembelajaran mesin.

Tukar Dua Numbers Tanpa Menggunakan Variabel Ketiga

Bagian di bawah ini membahas empat cara untuk melakukan pertukaran tanpa variabel sementara, ditambah dengan luapan aritmatika.

Dalam bahasa pemrograman, tukarping Artinya menukar nilai dua variabel. Variabel tersebut dapat berisi angka, string, daftar atau array, objek, dan lain sebagainya. Cara umum untuk menukar nilai adalah...ping adalah dengan menggunakan variabel sementara untuk menyimpan nilai. Misalnya,

Tukar Dua Numbers

Langkah-langkah umum swapping Dua angka tersebut adalah:

  • Deklarasikan variabel sementara C
  • Tetapkan nilai A ke C, artinya C = A. Sekarang C = 20
  • Tetapkan nilai B ke A, Jadi A = 30
  • Tetapkan nilai C ke B, Jadi B = 20, karena C bernilai 20.

Beginilah cara menukarping Hal ini dilakukan dengan bantuan variabel sementara, dan berlaku untuk bilangan bulat maupun bilangan pecahan.

Tukar menggunakan Persamaan Aritmatika

Seperti yang kita ketahui, pertukaranping Berarti menukar isi dari dua objek, bidang, atau variabel. Pertukaran menggunakan operasi aritmatika berarti melakukan pertukaran menggunakan persamaan matematika, yaitu penjumlahan dan pengurangan.traction.

Jika kita diberikan dua angka dan diminta untuk menukarnya tanpa menggunakan variabel sementara, maka dengan menggunakan tiga persamaan aritmatika, kita dapat menukar angka-angka tersebut.

Pseudokode untuk pertukaranping angka yang menggunakan operasi aritmatika:

A = A + B
B = A - B
A = A - B

Mari kita asumsikan kita memiliki dua angka, A = 20 dan B = 30.

Kondisi 1: SEBUAH = SEBUAH+B

Jadi, nilai A saat ini adalah 20+30 = 50.

Kondisi 2: B = AB

Sekarang, B = 50-30 = 20
Kita dapat melihat bahwa kita mendapatkan nilai A di B.

Kondisi 3: SEBUAH = AB

Terakhir, A = 50-20 = 30
A mempunyai nilai awal B.

Jadi, kami tinggal menukar nomornya.

Berikut adalah program untuk menukar dua angka dalam bahasa 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);
}

Keluaran:

Enter value of A: 20
Enter value of B: 30
A = 20 , B = 30
Now, A = 30 , B = 20

Program di 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))

Keluaran:

Enter value of A: 20
Enter value of B: 30
A = 20 , B = 30
Now, A = 30 , B = 20

Sekarang di Python, kita bahkan tidak perlu melakukan operasi aritmatika. Kita bisa menggunakan:

a,b = b,a

Berikut adalah demonstrasi di mana a=20, b=30;

Tukar menggunakan Persamaan Aritmatika

Tukar menggunakan Bitwise XOR Operator

Metode ini juga dikenal sebagai pertukaran XOR. XOR berarti eksklusif OR. Kita mengambil dua bit sebagai input untuk XOR dalam operasi bitwise ini. Untuk mendapatkan satu output dari XOR, hanya satu input yang harus bernilai 1. Jika tidak, outputnya akan bernilai 0. Tabel berikut menunjukkan output untuk semua kombinasi input A dan B.

Kita perlu mengetahui cara kerja operasi XOR untuk menukar dua angka menggunakan operasi bitwise. Berikut adalah tabel untuk XOR di mana A dan B adalah nilai input.

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

Jika dua input memiliki nilai yang sama, maka operasi XOR menghasilkan 0; jika tidak, 1. Untuk contoh ini, kita akan menggunakan operasi XOR 3. Dalam sebagian besar bahasa pemrograman, XOR dilambangkan dengan "^".

Mari kita asumsikan A=4 (dalam biner = 0100) dan B=7 (dalam biner, 0111)

Kondisi 1: SEBUAH = SEBUAH^B

A 0 1 0 0
B 0 1 1 1
SEBUAH ^ B 0 0 1 1

Sekarang, A = 0011 (dalam Biner).

Kondisi 2: B = A^B

A 0 0 1 1
B 0 1 1 1
SEBUAH ^ B 0 1 0 0

Jadi B = 0100 yang merupakan nilai biner awal dari A.

Kondisi 3: SEBUAH = SEBUAH^B

A 0 0 1 1
B 0 1 0 0
SEBUAH ^ B 0 1 1 1

Terakhir, A = 0111, yang merupakan nilai biner setara dengan B.

Program dalam 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);
}

Keluaran:

Enter value of A:4
Enter value of B:7
A=4, B=7
Now, A=7, B=4.

Program di 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))

Keluaran:

Enter the value of A:10
Enter the value of B:15
A=10 and B=15
Now, A=15,B=10.

Menukar Numbers menggunakan Bitwise-Aritmatika

Metode ini sama dengan metode aritmatika, tetapi kita akan menggunakan operasi bitwise seperti AND, OR, dan komplemen untuk melakukan penjumlahan dan pengurangan.tracSebelum melanjutkan ke langkah-langkahnya, mari kita lihat sekilas arti kata "komplemen".

Komplemen 1 berarti mengubah semua angka 0 menjadi 1 dan angka 1 menjadi 0. Mari kita ambil contoh.

  • Mari kita ambil contoh angka 23, sebuah bilangan desimal.
  • Mengonversi ke biner memberi kita 10111. Hanya ada 5 bit, tetapi komputer menyimpan angka dalam 8, 16, 32, 64 … bit. Jadi mari kita tambahkan nol di depan biner. Ini tidak akan mengubah nilai asli angka tersebut. Jadi akan menjadi 10111. 00010111.
  • Seperti yang kita ketahui, komplemen 1 berarti mengubah semua 0 menjadi 1 dan 1 menjadi 0, jadi melakukan komplemen 1 pada 00010111 memberikan 11101000.

Komplemen 1 ini direpresentasikan dengan simbol "~" di sebagian besar bahasa pemrograman. Meletakkan simbol ini sebelum nilai bilangan bulat atau nilai floating-point apa pun akan menghasilkan komplemen 1.

Dan komplemen 2 berarti menambahkan biner “1” ke komplemen 1. Jika kita melakukan komplemen 2 pada bilangan di atas:

  • Biner = 00010111
  • Komplemen 1 = 11101000
  • Komplemen 2:

11101000

+ 1

11101001

Jadi komplemen 2 adalah 11101001. Ini adalah Biner untuk -23.
Ringkasnya, untuk melakukan komplemen 2 pada bilangan A, akan terlihat seperti:

Komplemen 2 dari A = (~A) + 1

Sekarang mari kita asumsikan A=8 (biner 00001000), B=10 (00001010)

Kondisi 1: SEBUAH = (A & B) + (A | B)

Ini setara dengan A = A + B.

A & B = 00001000 & 00001010 = 00001000

SEBUAH | B = 00001000 | 00001010 = 00001010

Sekarang, 00001000 + 00001010 = 00010010 (desimal 18)

Jadi A = 18

Kondisi 2: B = SEBUAH + (~B) + 1

Ini setara dengan B = AB

Di sini, B = A – B

Berdasarkan pembahasan di atas, jika kita perlu melakukan subtraction, kita melakukan komplemen 2 pada bilangan negatif lalu menambahkannya.

Jadi, -B = ~B + 1

Sekarang, B = 00010010 + (11110101) + 1 = 00001000

Nilai B setara dengan desimal 8 yang merupakan nilai awal.

Kondisi 3: SEBUAH = SEBUAH + (~B) + 1

Ini setara dengan A = AB

Sekarang, A = 00010010 + 11110111 + 1

A = 00001010 (setara dengan desimal 10)

Akhirnya, A mendapatkan nilai B. Dengan demikian, pertukaran tersebut berhasil.ping selesai.

Program dalam 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);
}

Keluaran:

Enter the value of A: 8
Enter the value of B:10
A=8, B=10
Now, A=10, B=8

Program di 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))

Keluaran:

Enter the value of A: 25
Enter the value of B: 25
A = 25 and B = 25
Now, A = 25 and B = 25

Apa itu Aritmatika Overflow?

Istilah overflow berarti melampaui batas. Overflow aritmatika berarti hasil dari operasi aritmatika apa pun melampaui rentang atau batas representasi angka arsitektur komputer. Misalnya, jika suatu angka dibagi dengan nol, angka tersebut menjadi tak terhingga, dan sistem bilangan komputer tidak dapat menampungnya dalam 32 atau 64 bit.

Representasi bilangan bulat

Representasi bilangan bulat dalam sistem 32-bit

Konsekuensi dari luapan aritmatika dapat berupa:

  • Penjumlahan dua bilangan positif menjadi negatif, karena bit tanda bisa menjadi 1, yang berarti bilangan negatif.
  • Penjumlahan dua bilangan negatif menjadi positif, karena bit tanda bisa menjadi 0, yang berarti bilangan positif.

Pertanyaan Umum Demo Slot

Pertukaran XORping adalah favorit dalam wawancara: tidak ada memori tambahan, tidak ada kelebihan kapasitas. Aritmatika adalah cadangan yang cukup baik, dan Python Pengembang biasanya hanya menulis a, b = b, a.

Tidak. Operasi XOR bitwise hanya berfungsi pada pola bit bilangan bulat, bukan bilangan pecahan, bilangan desimal, atau pointer. Untuk bilangan pecahan, gunakan pembongkaran tuple atau pertukaran aritmatika sebagai gantinya.

Jika kedua variabel berbagi satu lokasi memori, lakukan pertukaran XOR.ping Mengatur nilai menjadi 0. Tambahkan pemeriksaan if setiap kali aliasing dimungkinkan.

Ya: a = a * b, b = a / b, a = a / b. Tetapi ini gagal ketika salah satu nilainya adalah 0 dan kehilangan presisi floating point.

Hanya pembongkaran tuple yang bisa melakukannya. Menulis a, b = b, a akan menukar string, daftar, atau objek. Trik aritmatika dan XOR hanya berlaku untuk bilangan bulat.

Hampir tidak berpengaruh. Kompilator modern sudah mengoptimalkan pertukaran variabel sementara, jadi trik ini jarang meningkatkan kecepatan. Readable Kode lebih penting daripada menyimpan satu variabel.

Ya. Pembelajaran mesin menukar nilai dengan kode. Python pembongkaran tuple, dan JumlahPy Pengindeksan seperti arr[[i, j]] = arr[[j, i]] menukar baris array di tempatnya.

Ya. GitHub Copilot dan asisten AI serupa menghasilkan operasi XOR, aritmatika, dan pertukaran pembongkaran tuple dari sebuah perintah. RevPeriksa masing-masing untuk kesalahan luapan dan aliasing.

Ringkaslah postingan ini dengan: