Pengendali C # Bitwise: AND, OR, XOR, Operasi Pelengkap dan Shift

Dalam tutorial ini, kita akan belajar secara terperinci mengenai pengendali bitwise dan bit shift di C #. C # menyediakan 4 operator shift bit dan 2 bit.

Pengendali bitwise dan bit shift digunakan untuk melakukan operasi tahap bit pada data integer (int, long, etc) dan boolean. Pengendali ini tidak biasa digunakan dalam situasi kehidupan sebenar.

Sekiranya anda berminat untuk meneroka lebih lanjut, kunjungi aplikasi praktikal operasi bitwise.

Pengendali bitwise dan bit shift yang terdapat di C # disenaraikan di bawah.

Senarai Pengendali C # Bitwise
Pengendali Nama Pengendali
~ Pelengkap Bitwise
& Sedikit demi sedikit DAN
| Sedikit demi sedikit ATAU
^ Bitwise Exclusive ATAU (XOR)
<< Anjakan Kiri Bitwise
>> Pergeseran Kanan Bitwise

Sedikit demi sedikit ATAU

Pengendali bitwise ATAU diwakili oleh |. Ia menjalankan operasi bitwise ATAU pada bit dua operasi yang sepadan. Sekiranya salah satu daripada bit itu 1, hasilnya adalah 1. Jika tidak, hasilnya adalah 0.

Sekiranya operan adalah jenis bool, operasi OR bitwise sama dengan operasi OR logik di antara mereka.

Sebagai contoh,

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

OROperasi bitwise antara 14 dan 11:

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

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

Semasa kita menjalankan program, outputnya adalah:

14 | 11 = 15

Sedikit demi sedikit DAN

Pengendali bitwise AND diwakili oleh &. Ia melakukan operasi bitwise AND pada bit yang sesuai dari dua operasi. Sekiranya salah satu daripada bit itu 0, hasilnya adalah 0. Jika tidak, hasilnya adalah 1.

Sekiranya operan adalah jenis bool, operasi AND bitwise sama dengan operasi AND logik di antara mereka.

Sebagai contoh,

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

Operasi Bitwise AND antara 14 dan 11:

 00001110 00001011 -------- 00001010 = 10 (Dalam Perpuluhan)

Contoh 2: Bitwise DAN

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

Semasa kita menjalankan program, outputnya adalah:

 14 & 11 = 10

Bitwise XOR

Pengendali Bitwise XOR diwakili oleh ^. Ia melakukan operasi XOR secara bit ke atas bit dua operasi. Sekiranya bit yang sama sama , hasilnya adalah 0. Sekiranya bit yang sesuai berbeza , hasilnya adalah 1.

Sekiranya operan adalah jenis bool, operasi XOR bitwise setara dengan operasi XOR logik di antara mereka.

Sebagai contoh,

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

Operasi Bitwise XOR antara 14 dan 11:

 00001110 00001011 -------- 00000101 = 5 (Dalam Perpuluhan)

Sekiranya anda ingin mengetahui lebih lanjut mengenai 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); ) ) ) 

Semasa kita menjalankan program, outputnya adalah:

 14 11 = 5

Pelengkap Bitwise

Operator Bitwise Complement diwakili oleh ~. Ia adalah pengendali yang tidak berfungsi, iaitu beroperasi hanya pada satu operasi. The ~operator Terbalikkan setiap bit iaitu perubahan 1-0 dan 0-1.

Sebagai contoh,

 26 = 00011010 (Dalam Perduaan)

Operasi Pelengkap Bitwise pada 26:

 ~ 00011010 = 11100101 = 229 (Dalam Perpuluhan)

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

Semasa kita menjalankan program, outputnya adalah:

 ~ 26 = -27

Kami mendapat - 27sebagai output ketika kami menjangkakan 229. Mengapa perkara ini berlaku?

Ia berlaku kerana nilai binari 11100101yang kita harapkan 229sebenarnya merupakan representasi pelengkap 2 -27. Nombor negatif dalam komputer ditunjukkan dalam perwakilan pelengkap 2.

Untuk sebarang integer n, pelengkap 2 sebanyak nakan menjadi -(n+1).

Pelengkap 2
Perpuluhan Perduaan Pelengkap 2's
0 00000000 - (11111111 + 1) = -00000000 = -0 (Dalam Perpuluhan)
1 00000001 - (11111110 + 1) = -11111111 = -256 (Dalam Perpuluhan)
229 11100101 - (00011010 + 1) = -00011011 = -27

Nilai limpahan diabaikan dalam pelengkap 2.

Pelengkap bitwise 26adalah 229 (dalam perpuluhan) dan pelengkap 2 229adalah -27. Oleh itu outputnya -27bukan 229.

Anjakan Kiri Bitwise

Operator peralihan kiri bitwise diwakili oleh <<. The <<pengendali beralih nombor kepada yang ditinggalkan oleh jumlah ditentukan bit. Nol ditambahkan pada bit yang paling tidak signifikan.

Dalam perpuluhan, ia bersamaan dengan

 angka * 2bits

Sebagai contoh,

 42 = 101010 (Dalam Binari)

Operasi Bitwise Lift Shift pada 42:

 42 << 1 = 84 (Dalam binari 1010100) 42 << 2 = 168 (Dalam binari 10101000) 42 << 4 = 672 (Dalam binari 1010100000)

Contoh 5: Anjakan 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); ) ) ) 

Semasa kita menjalankan program, outputnya adalah:

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

Pergeseran Kanan Bitwise

Bitwise operator shift kiri diwakili oleh >>. The >>pengendali beralih beberapa ke kanan dengan beberapa tertentu bit. Operan pertama dialihkan ke kanan dengan bilangan bit yang ditentukan oleh operan kedua.

Dalam perpuluhan, ia bersamaan dengan

 lantai (bilangan / 2 bit)

Sebagai contoh,

 42 = 101010 (Dalam Binari)

Operasi Bitwise Lift Shift pada 42:

 42 >> 1 = 21 (Dalam binari 010101) 42 >> 2 = 10 (Dalam binari 001010) 42 >> 4 = 2 (Dalam binari 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); ) ) ) 

Semasa kita menjalankan program, outputnya adalah:

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

Artikel menarik...