C # Operator Bitwise: Operasi AND, OR, XOR, Komplemen dan Shift

Dalam tutorial ini, kita akan belajar secara detail tentang operator bitwise dan bit shift di C #. C # menyediakan 4 operator pergeseran bitwise dan 2 bit.

Operator bitwise dan bit shift digunakan untuk melakukan operasi level bit pada data integer (int, long, dll) dan boolean. Operator ini tidak umum digunakan dalam situasi kehidupan nyata.

Jika Anda tertarik untuk menjelajahi lebih lanjut, kunjungi aplikasi praktis dari operasi bitwise.

Operator bitwise dan bit shift yang tersedia di C # tercantum di bawah ini.

Daftar Operator C # Bitwise
Operator Nama Operator
~ Pelengkap Bitwise
& Bitwise DAN
| Bitwise ATAU
^ Eksklusif Bitwise OR (XOR)
<< Pergeseran Kiri Bitwise
>> Pergeseran Kanan Bitwise

Bitwise ATAU

Operator Bitwise OR diwakili oleh |. Ini melakukan operasi bitwise OR pada bit yang sesuai dari dua operan. Jika salah satu bitnya adalah 1, hasilnya adalah 1. Jika tidak, hasilnya adalah 0.

Jika operan bertipe bool, operasi bitwise OR sama dengan operasi logika OR di antara keduanya.

Sebagai contoh,

 14 = 00001110 (Dalam Biner) 11 = 00001011 (Dalam Biner)

OROperasi bitwise antara 14 dan 11:

 00001110 00001011 -------- 00001111 = 15 (Dalam Desimal)

Contoh 1: Bitwise ATAU

 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); ) ) ) 

Saat kita menjalankan program, outputnya adalah:

14 | 11 = 15

Bitwise DAN

Operator Bitwise AND diwakili oleh &. Ini melakukan operasi bitwise AND pada bit yang sesuai dari dua operan. Jika salah satu bitnya adalah 0, hasilnya adalah 0. Jika tidak, hasilnya adalah 1.

Jika operan bertipe bool, operasi AND bitwise setara dengan operasi logika AND di antara keduanya.

Sebagai 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); ) ) ) 

Saat kita menjalankan program, outputnya adalah:

 14 & 11 = 10

Bitwise XOR

Operator Bitwise XOR diwakili oleh ^. Ia melakukan operasi XOR bitwise pada bit yang sesuai dari dua operan. Jika bit yang sesuai sama , hasilnya adalah 0. Jika bit yang bersangkutan berbeda , hasilnya adalah 1.

Jika operan berjenis bool, operasi XOR bitwise setara dengan operasi XOR logis di antara keduanya.

Sebagai 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 lanjut 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); ) ) ) 

Saat kita menjalankan program, outputnya adalah:

 14 11 = 5

Pelengkap Bitwise

Operator Bitwise Complement diwakili oleh ~. Ini adalah operator unary, yaitu beroperasi hanya pada satu operan. The ~Operator membalikkan setiap bit yaitu perubahan 1 ke 0 dan 0 ke 1.

Sebagai contoh,

 26 = 00011010 (Dalam Biner)

Operasi Bitwise Complement pada tanggal 26:

 ~ 00011010 = 11100101 = 229 (Dalam Desimal)

Contoh 4: Pelengkap Bitwise

 using System; namespace Operator ( class BitWiseComplement ( public static void Main(string() args) ( int number = 26, result; result = ~number; Console.WriteLine("~(0) = (1)", number, result); ) ) ) 

Saat kita menjalankan program, outputnya adalah:

 ~ 26 = -27

Kami mendapat - 27sebagai keluaran saat kami mengharapkan 229. Kenapa ini terjadi?

Itu terjadi karena nilai biner 11100101yang kita harapkan 229sebenarnya adalah representasi komplemen 2 -27. Bilangan negatif di komputer direpresentasikan dalam representasi komplemen 2.

Untuk bilangan bulat n apa pun, komplemen 2 dari nakan menjadi -(n+1).

Pelengkap 2
Desimal Biner Pelengkap 2
0 00000000 - (11111111 + 1) = -00000000 = -0 (Dalam Desimal)
1 00000001 - (11111110 + 1) = -11111111 = -256 (Dalam Desimal)
229 11100101 - (00011010 + 1) = -00011011 = -27

Nilai luapan diabaikan dalam pelengkap 2.

Komplemen bitwise dari 26adalah 229 (dalam desimal) dan komplemen 2 229adalah -27. Oleh karena itu, keluarannya -27bukan 229.

Pergeseran Kiri Bitwise

Operator bitwise left shift diwakili oleh <<. The <<Operator bergeser sejumlah ke kiri oleh sejumlah tertentu dari bit. Nol ditambahkan ke bit paling signifikan.

Dalam desimal, ini setara dengan

 num * 2bits

Sebagai 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: Pergeseran Kiri Bitwise

 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); ) ) ) 

Saat kita menjalankan program, outputnya adalah:

 42 << 1 = 84 42 << 2 = 168 42 << 4 = 672

Pergeseran Kanan Bitwise

Operator bitwise left shift diwakili oleh >>. The >>Operator bergeser sejumlah ke kanan dengan sejumlah tertentu dari bit. Operan pertama digeser ke kanan dengan jumlah bit yang ditentukan oleh operan kedua.

Dalam desimal, ini setara dengan

 lantai (num / 2bits)

Sebagai 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: Pergeseran Kanan Bitwise

 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); ) ) ) 

Saat kita menjalankan program, outputnya adalah:

 42 >> 1 = 21 42 >> 2 = 10 42 >> 4 = 2

Artikel yang menarik...