Tukar dua angka tanpa menggunakan variabel ketiga: C, Python program
Dalam pemrograman, pertukaran bahasa berarti menukar nilai dua variabel. Variabel mungkin berisi angka, string, daftar atau array, objek, dll. Cara umum untuk menukar adalah dengan menggunakan variabel sementara untuk menyimpan nilai. Misalnya,
Langkah-langkah umum untuk menukar dua angka adalah:
- Mendeklarasikan 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.
Ini adalah cara pertukaran yang dilakukan dengan bantuan variabel sementara. Metode ini akan berfungsi baik untuk bilangan bulat maupun bilangan pecahan.
Tukar menggunakan Persamaan Aritmatika
Seperti yang kita ketahui, swapping berarti menukar isi dari dua objek atau field atau variabel. Swap menggunakan operasi aritmatika berarti melakukan operasi swap menggunakan persamaan matematika, yaitu penjumlahan dan pengurangan.
Jika kita diberikan dua angka dan diminta untuk menukar tanpa menggunakan variabel sementara, maka dengan menggunakan tiga persamaan aritmatika, kita dapat menukar angka-angka tersebut.
Pseudocode untuk menukar angka 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 mendapat nilai A di B
Kondisi 3: SEBUAH = AB
Terakhir, A = 50-20 = 30
A mempunyai nilai awal B.
Jadi, kami tinggal menukar nomornya.
Berikut program untuk menukar dua angka 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: 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 dapat menggunakan:
a,b = b,a
Berikut demonstrasi dimana a=20, b=30;
Tukar menggunakan Bitwise XOR Operator
Metode ini juga dikenal sebagai XOR swap. XOR berarti exclusive OR. Kami 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, output akan bernilai 0. Tabel berikut menunjukkan output untuk semua kombinasi input A 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 akan menghasilkan 0; jika tidak, akan menghasilkan 1. Untuk contoh ini, kita akan menggunakan operasi XOR 3. Dalam kebanyakan bahasa pemrograman, XOR dilambangkan sebagai “^”.
Misalkan 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 Compliment untuk melakukan penjumlahan dan pengurangan. Sebelum masuk ke langkah-langkahnya, mari kita bahas "Compliment" secara singkat.
Komplemen 1 artinya mengubah semua angka 0 menjadi 1 dan 1 menjadi 0. Mari kita lihat sebuah contoh.
- Misalkan saja angka 23, angka desimal.
- Konversi ke Biner menggunakan 10111. Hanya ada 5 bit, tetapi komputer menyimpan angka dalam 8,16,32,64 .. bit. Jadi mari kita tambahkan nol di depan Biner. Itu tidak akan mengubah nilai asli nomor tersebut. Jadi itu akan menjadi 00010111.
- Seperti kita ketahui, pujian 1 berarti mengubah semua 0 menjadi 1 dan 1 menjadi 0, sehingga melakukan pelengkap 1 di atas 00010111 memberikan 11101000
Komplemen 1 ini diwakili dengan “~” simbol ini di sebagian besar bahasa pemrograman. Meletakkan simbol ini sebelum nilai integer atau nilai floating point 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
- pujian 1 = 11101000
- pujian 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
Setara dengan B = AB
Di sini, B = A – B
Dari pembahasan di atas, jika kita perlu melakukan pengurangan, kita melakukan komplemen 2 pada bilangan negatifnya lalu menjumlahkannya.
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
Setara dengan A = AB
Sekarang, A = 00010010 + 11110111 + 1
A = 00001010 (setara dengan desimal 10)
Akhirnya A mendapat nilai B. Dengan demikian, pertukaran 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 bahwa hasil dari setiap operasi aritmatika melampaui rentang atau batas representasi angka arsitektur komputer. Misalnya, jika suatu angka dibagi dengan nol, angka tersebut menjadi tak terhingga, dan sistem angka komputer tidak dapat menampungnya dalam 32 atau 64 bit.
Konsekuensi dari luapan aritmatika dapat berupa:
- Penambahan dua angka positif menjadi negatif. Karena bit tanda mungkin menjadi 1, yang berarti angka negatif.
- Penambahan dua angka negatif menjadi positif. Karena bit tanda mungkin menjadi 0, yang berarti angka positif.