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 # BitwisePengendali | 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)
OR
Operasi 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 - 27
sebagai output ketika kami menjangkakan 229
. Mengapa perkara ini berlaku?
Ia berlaku kerana nilai binari 11100101
yang kita harapkan 229
sebenarnya merupakan representasi pelengkap 2 -27
. Nombor negatif dalam komputer ditunjukkan dalam perwakilan pelengkap 2.
Untuk sebarang integer n, pelengkap 2 sebanyak n
akan menjadi -(n+1)
.
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 26
adalah 229 (dalam perpuluhan) dan pelengkap 2 229
adalah -27
. Oleh itu outputnya -27
bukan 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