Menguasai Operator Bitwise dan Bit Shift C#: Panduan Komprehensif
Operator Bitwise dan Bit Shift C#
Dalam tutorial ini, kita akan mempelajari secara detail operator bitwise dan bit shift di C#. C# menyediakan 4 operator bitwise dan 2 operator bit shift.
Operator bitwise dan bit shift digunakan untuk melakukan operasi pada level bit data integer (int, long, dll.) dan boolean. Operator ini tidak sering digunakan dalam situasi kehidupan nyata.
Jika Anda tertarik untuk mengeksplorasi lebih lanjut, kunjungi aplikasi praktis operasi bitwise.
Operator bitwise dan bit shift yang tersedia di C# tercantum di bawah ini.
Daftar Operator Bitwise C# | Operator | Nama Operator |
|---|
| ~ | Bitwise Complement |
| & | Bitwise AND |
| | | Bitwise OR |
| ^ | Bitwise Exclusive OR (XOR) |
| << | Bitwise Left Shift |
| >> | Bitwise Right Shift |
Bitwise OR
Operator Bitwise OR direpresentasikan oleh |. Ini melakukan operasi Bitwise OR pada bit yang sesuai dari dua operan. Jika salah satu bit adalah 1, hasilnya adalah 1. Sebaliknya hasilnya adalah 0.
Jika operan bertipe bool, operasi Bitwise OR setara dengan operasi Logical OR di antara keduanya.
Contoh:
14 = 00001110 (Dalam Biner) 11 = 00001011 (Dalam Biner)
Operasi Bitwise OR antara 14 dan 11:
00001110 00001011 -------- 00001111 = 15 (Dalam Desimal)
Contoh 1: Bitwise OR
using System; namespace Operator { class BitWiseOR { public static void Main(string[] args) { int firstNumber = 14, secondNumber = 11, result; result = firstNumber | secondNumber; Console.WriteLine("{0} | {1} = {2}", firstNumber, secondNumber, result); } } }
Ketika kita menjalankan program, keluaran akan:
14 | 11 = 15
Bitwise AND
Operator Bitwise AND direpresentasikan oleh &. Ini melakukan operasi Bitwise AND pada bit yang sesuai dari dua operan. Jika salah satu bit adalah 0, hasilnya adalah 0. Sebaliknya hasilnya adalah 1.
Jika operan bertipe bool, operasi Bitwise AND setara dengan operasi Logical AND di antara keduanya.
Contoh:
14 = 00001110 (Dalam Biner) 11 = 00001011 (Dalam Biner)
Operasi Bitwise AND antara 14 dan 11:
00001110 00001011 -------- 00001010 = 10 (Dalam Desimal)
Contoh 2: Bitwise AND
using System; namespace Operator { class BitWiseAND { public static void Main(string[] args) { int firstNumber = 14, secondNumber = 11, result; result = firstNumber & secondNumber; Console.WriteLine("{0} & {1} = {2}", firstNumber, secondNumber, result); } } }
Ketika kita menjalankan program, keluaran akan:
14 & 11 = 10
Bitwise XOR
Operator Bitwise XOR direpresentasikan oleh ^. Ini melakukan operasi Bitwise XOR pada bit yang sesuai dari dua operan. Jika bit yang sesuai sama, hasilnya adalah 0. Jika bit yang sesuai berbeda, hasilnya adalah 1.
Jika operan bertipe bool, operasi Bitwise XOR setara dengan operasi Logical XOR di antara keduanya.
Contoh:
14 = 00001110 (Dalam Biner) 11 = 00001011 (Dalam Biner)
Operasi Bitwise XOR antara 14 dan 11:
00001110 00001011 -------- 00000101 = 5 (Dalam Desimal)
Jika Anda ingin mengetahui lebih banyak tentang penggunaan Bitwise XOR, kunjungi The Magic of XOR
Contoh 3: Bitwise XOR
using System; namespace Operator { class BitWiseXOR { public static void Main(string[] args) { int firstNumber = 14, secondNumber = 11, result; result = firstNumber^secondNumber; Console.WriteLine("{0} ^ {1} = {2}", firstNumber, secondNumber, result); } } }
Ketika kita menjalankan program, keluaran akan:
14 ^ 11 = 5
Bitwise Complement
Operator Bitwise Complement direpresentasikan oleh ~. Ini adalah operator unary, yaitu beroperasi pada hanya satu operan. Operator ~ membalikkan setiap bit yaitu mengubah 1 menjadi 0 dan 0 menjadi 1.
Contoh:
26 = 00011010 (Dalam Biner)
Operasi Bitwise Complement pada 26:
~ 00011010 = 11100101 = 229 (Dalam Desimal)
Contoh 4: Bitwise Complement
using System; namespace Operator { class BitWiseComplement { public static void Main(string[] args) { int number = 26, result; result = ~number; Console.WriteLine("~{0} = {1}", number, result); } } }
Ketika kita menjalankan program, keluaran akan:
~26 = -27
Kami mendapatkan -27 sebagai output saat kami mengharapkan 229. Mengapa ini terjadi?
Ini terjadi karena nilai biner 11100101 yang kami harapkan menjadi 229 sebenarnya adalah representasi 2's complement dari -27. Angka negatif di komputer direpresentasikan dalam representasi 2's complement.
Untuk bilangan bulat n, 2's complement dari n akan menjadi -(n+1).
2's complement | Desimal | Biner | 2's Complement |
|---|
| 0 | 00000000 | -(11111111 + 1) = -00000000 = -0 (Dalam Desimal) |
| 1 | 00000001 | -(11111110 + 1) = -11111111 = -256 (Dalam Desimal) |
| 229 | 11100101 | -(00011010 + 1) = -00011011 = -27 |
Nilai overflow diabaikan dalam 2's complement.
Bitwise complement dari 26 adalah 229 (dalam desimal) dan 2's complement dari 229 adalah -27. Oleh karena itu output adalah -27 alih-alih 229.
Bitwise Left Shift
Operator Bitwise left shift direpresentasikan oleh <<. Operator << menggeser sebuah angka ke kiri sejumlah bit yang ditentukan. Nol ditambahkan ke bit least significant.
Dalam desimal, setara dengan
num * 2bits
Contoh:
42 = 101010 (Dalam Biner)
Operasi Bitwise Lift Shift pada 42:
42 << 1 = 84 (Dalam biner 1010100) 42 << 2 = 168 (Dalam biner 10101000) 42 << 4 = 672 (Dalam biner 1010100000)
Contoh 5: Bitwise Left Shift
using System; namespace Operator { class LeftShift { public static void Main(string[] args) { int number = 42; Console.WriteLine("{0}<<1 = {1}", number, number<<1); Console.WriteLine("{0}<<2 = {1}", number, number<<2); Console.WriteLine("{0}<<4 = {1}", number, number<<4); } } }
Ketika kita menjalankan program, keluaran akan:
42<<1 = 84 42<<2 = 168 42<<4 = 672
Bitwise Right Shift
Operator Bitwise left shift direpresentasikan oleh >>. Operator >> menggeser sebuah angka ke kanan sejumlah bit yang ditentukan. Operan pertama digeser ke kanan dengan jumlah bit yang ditentukan oleh operan kedua.
Dalam desimal, setara dengan
floor(num / 2bits)
Contoh:
42 = 101010 (Dalam Biner)
Operasi Bitwise Lift Shift pada 42:
42 >> 1 = 21 (Dalam biner 010101) 42 >> 2 = 10 (Dalam biner 001010) 42 >> 4 = 2 (Dalam biner 000010)
Contoh 6: Bitwise Right Shift
using System; namespace Operator { class LeftShift { public static void Main(string[] args) { int number = 42; Console.WriteLine("{0}>>1 = {1}", number, number>>1); Console.WriteLine("{0}>>2 = {1}", number, number>>2); Console.WriteLine("{0}>>4 = {1}", number, number>>4); } } }
Ketika kita menjalankan program, keluaran akan:
42>>1 = 21 42>>2 = 10 42>>4 = 2