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)
OR
14 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 - 27
beklediğimizde çıktı olarak 229
. Bu neden oldu?
Olmasını 11100101
beklediğimiz ikili değer 229
aslı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ı n
olacaktır -(n+1)
.
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ı 26
229'dur (ondalık olarak) ve 2'nin tamamlayıcısı' 229
dır -27
. Dolayısıyla çıktı -27
yerine 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