C # Bitsel Operatörler: AND, OR, XOR, Complement ve Shift Operasyonları

Bu eğitimde, C # 'da bitsel ve bit kaydırma operatörleri hakkında ayrıntılı olarak bilgi edineceğiz. C #, 4 bitsel ve 2 bit kaydırma operatörü sağlar.

Bitsel ve bit kaydırma operatörleri, tamsayı (int, long, vb.) Ve boolean verileri üzerinde bit seviyesinde işlemler gerçekleştirmek için kullanılır. Bu operatörler gerçek yaşam koşullarında yaygın olarak kullanılmamaktadır.

Daha fazlasını keşfetmek istiyorsanız, bitsel işlemlerin pratik uygulamalarını ziyaret edin.

C # 'da bulunan bitsel ve bit kaydırma operatörleri aşağıda listelenmiştir.

C # Bitsel Operatörlerin Listesi
Şebeke Operatör ismi
~ Bitsel Tamamlayıcı
& Bitsel AND
| Bit tabanlı VEYA
^ Bitsel Dışlayıcı VEYA (XOR)
<< Bit Düzeyinde Sola Kaydırma
>> Bit Düzeyinde Sağa Kaydırma

Bit tabanlı VEYA

Bit tabanlı OR operatörü ile temsil edilir |. İki işlenenin karşılık gelen bitleri üzerinde bitsel OR işlemi gerçekleştirir. Bitlerden biri ise 1, sonuç olur 1. Aksi takdirde sonuç olur 0.

İşlenenler türdeyse bool, bit tabanlı OR işlemi, bunlar arasındaki mantıksal OR işlemine eşdeğerdir.

Örneğin,

 14 = 00001110 (İkili Olarak) 11 = 00001011 (İkili Olarak)

OR14 ile 11 arasında bitsel işlem:

 00001110 00001011 -------- 00001111 = 15 (Ondalık olarak)

Örnek 1: Bitsel VEYA

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

Programı çalıştırdığımızda çıktı şöyle olacaktır:

14 | 11 = 15

Bitsel AND

Bitsel AND operatörü ile temsil edilir &. İki işlenenin karşılık gelen bitleri üzerinde bitsel VE işlemi gerçekleştirir. Bitlerden biri ise 0, sonuç olur 0. Aksi takdirde sonuç olur 1.

İşlenenler türdeyse bool, bitsel AND işlemi aralarındaki mantıksal AND işlemine eşdeğerdir.

Örneğin,

 14 = 00001110 (İkili Olarak) 11 = 00001011 (İkili Olarak)

14 ile 11 arasında bit tabanlı VE işlemi:

 00001110 00001011 -------- 00001010 = 10 (Ondalık olarak)

Örnek 2: Bitsel 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); ) ) ) 

Programı çalıştırdığımızda çıktı şöyle olacaktır:

 14 ve 11 = 10

Bitsel ÖZELVEYA

Bitsel XOR operatörü ile temsil edilir ^. İki işlenenin karşılık gelen bitleri üzerinde bitsel XOR işlemi gerçekleştirir. Karşılık gelen bitler aynıysa sonuç olur 0. Karşılık gelen bitler farklıysa sonuç olur 1.

İşlenen tiptedir ise bool, bit XOR işlemi, bunların arasındaki mantıksal XOR eşdeğerdir.

Örneğin,

 14 = 00001110 (İkili Olarak) 11 = 00001011 (İkili Olarak)

14 ile 11 arasında bit tabanlı XOR işlemi:

 00001110 00001011 -------- 00000101 = 5 (Ondalık olarak)

Bitwise XOR kullanımı hakkında daha fazla bilgi edinmek isterseniz The Magic of XOR'u ziyaret edin.

Örnek 3: Bitsel ÖZELVEYA

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

Programı çalıştırdığımızda çıktı şöyle olacaktır:

 14 11 = 5

Bitsel Tamamlayıcı

Bitwise Complement operatörü ile temsil edilir ~. Tekli bir operatördür, yani sadece bir işlenen üzerinde çalışır. ~Operatör tersine çevirir , yani 1 ila 1 0 ve 0 değiştirdiği her bit.

Örneğin,

 26 = 00011010 (İkili Olarak)

26'da Bitsel Tamamlama işlemi:

 ~ 00011010 = 11100101 = 229 (Ondalık olarak)

Örnek 4: Bitsel Tamamlayıcı

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

Programı çalıştırdığımızda çıktı şöyle olacaktır:

 ~ 26 = -27

Elimizde - 27beklediğimizde çıktı olarak 229. Bu neden oldu?

Olmasını 11100101beklediğimiz ikili değer 229aslında 2'nin tamamlayıcı temsili olduğu için olur -27. Bilgisayardaki negatif sayılar, 2'nin tümleyen gösteriminde temsil edilir.

Herhangi bir n tamsayısı için, 2'nin tamamlayıcısı nolacaktır -(n+1).

2'nin tamamlayıcısı
Ondalık İkili 2's Tamamlayıcı
0 00000000 - (11111111 + 1) = -00000000 = -0 (Ondalık olarak)
1 00000001 - (11111110 + 1) = -11111111 = -256 (Ondalık olarak)
229 11100101 - (00011010 + 1) = -00011011 = -27

Aşma değerleri, 2'nin tamamlayıcısında yok sayılır.

'Nin bitsel tamamlayıcısı 26229'dur (ondalık olarak) ve 2'nin tamamlayıcısı' 229dır -27. Dolayısıyla çıktı -27yerine 229.

Bit Düzeyinde Sola Kaydırma

Bit tabanlı sola kaydırma operatörü ile temsil edilir <<. <<Operatör bir bit tarafından belirlenen sayıda sola bir dizi kaydırır. Sıfırlar, en önemsiz bitlere eklenir.

Ondalık olarak eşdeğerdir

 num * 2bits

Örneğin,

 42 = 101010 (İkili Olarak)

42'de Bitsel Kaldırma Kaydırma işlemi:

 42 << 1 = 84 (İkili olarak 1010100) 42 << 2 = 168 (İkili olarak 10101000) 42 << 4 = 672 (İkili olarak 1010100000)

Örnek 5: Bit Düzeyinde Sola Kaydırma

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

Programı çalıştırdığımızda çıktı şöyle olacaktır:

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

Bit Düzeyinde Sağa Kaydırma

Bit tabanlı sola kaydırma operatörü ile temsil edilir >>. >>Operatör bit belirli sayısına göre sağa bir numara kaydırır. İlk işlenen, ikinci işlenen tarafından belirtilen bit sayısı kadar sağa kaydırılır.

Ondalık olarak eşdeğerdir

 kat (num / 2bits)

Örneğin,

 42 = 101010 (İkili Olarak)

42'de Bitsel Kaldırma Kaydırma işlemi:

 42 >> 1 = 21 (İkili 010101) 42 >> 2 = 10 (İkili 001010) 42 >> 4 = 2 (İkili 000010)

Örnek 6: Bit Düzeyinde Sağa Kaydırma

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

Programı çalıştırdığımızda çıktı şöyle olacaktır:

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

Ilginç makaleler...