C# BitArray Class

Merhaba arkadaşlar,

Collections nesnelerini daha iyi anlamak için System.Collection isim alanında bulunan bazı arayüzleri uygulayarak kendi koleksiyon nesnelerimizi geliştirip işin mutfağında neler oluyor öğrenmeye çalışmıştık. System.Collection isim alanında bulunan arayüz ve koleksiyon tabanlı sınıflar ile ilgili serime burada ulaşabilirsiniz.

Bu yazımda .Net Platformunda hazır bulunan koleksiyon tabanlı BitArray sınıfını inceleyeceğiz. BitArray sınıfının özellikleri ve metotlarını ele alıp örnek üzerinde pekiştiriyor olacağız.

BitArray sınıfı bitlerle işlem yapmak için özelleştirilmiş koleksiyon tabanlı bir sınıftır. Bitler 1 ve 0 değeri alır yani bir değerini ifade eden true, sıfır değerini ifade eden false değeri saklanır. BitArray ile bir sayının bitlerine tek tek erişebileceğimiz gibi bitsel AND ve XOR işlemleri gerçekleştirebiliriz.

BitArray sınıfını 6 faklı yapıcı metot ile oluşturabiliriz.

BitArray(BitArray bArray) metodu ile bArray koleksiyonundan elemanlarını kullanarak yeni bir BitArray koleksiyonu oluşturur.

BitArray(bool[] bArray) metodu ile bool türünden bArray elemanlarını kullanarak yeni bir koleksiyon nesnesi oluşturur.

BitArray(byte[] bArray) metodu ile byte türünden bArray elemanlarını kullanarak yeni bir koleksiyon oluşturur. Oluşan koleksiyonun eleman sayısı 8*bArray.Legth kadardır. Bunun sebebi byte türünün 8 byte büyüklüğünde olmasıdır. Yani dizinin ilk elemanı koleksiyondaki ilk 8 elemanı temsil eder. Bitleri 1 olanlar true, 0 olanlar false olacak şekilde düzenlenir.

BitArray(int[] bArray) metodu ile int türünden dizi olan bArray elemanlarını kullanarak yeni bir koleksiyon oluşturur. Oluşan koleksiyonun eleman sayısı 32*bArray.Lethgh. Bunun sebebi int türünün 32 byte büyüklüğünde olmasıdır. Yani dizinin ilk elemanı koleksiyondaki ilk 32 biti temsil eder.

BitArray sınıfında Count ve Legth özellikleri vardır.

  • Count özelliği get blogu ile bildirilmiştir. Bitlerin sayısını döner
  • Legth özelliği hem get hem set blogu bildirilmiştir. Dolayısıyla bit koleksiyonunun uzunluğunu artırabilir ve ya azaltabilir.
    • Eğer uzunluğu azaltırsak soldaki bitler silinir
    • Eğer uzunuluğu artırırsak; artırılan eleman sayısı kadar bit değeri koleksiyonun sonuna eklenir.

Indeksleyici yardımı BitArray koleksiyonunun her bir elemanına erişebiliriz

BitArray koleksiyonunda ayrıca Get ve Set metotları vardır.

  • Get(Int32) metodu ile koleksiyondaki belirtilen indeksteki bit değerini verir
  • Set(Int32, Boolean) metodu ile belirtilen indekse bit değerini ayarlar.

BitArray sınıfının önemli bir metot grubu daha vardır. Bu metotlar koleksiyondaki bitler üzerinde bitsel işlemler yapar ve sonucu ise yeni bir koleksiyon referansı olarak geri döner.

  • And metodu ile bitsel VE işlemine tabi tutulur
  • Or metodu ile bitset VEYA işlemine tabi tutulur
  • Xor metodu ile bitsel özel VEYA işlemine tabi tutulur
  • Not metodu ile her bitin bitsel değilini alır

BitArray sınıfının metot ve özelliklerine buradan daha detaylı şekilde ulaşabilirsiniz.

BitArray sınıfını temel düzeyde bazı metot ve özellikleri öğrenmiş olduk. Bu bilgileri kullanarak uygulama yapalım. byte türünde dizi kullanarak BitArray sınıfının yapıcı metodu ile nesnemizi oluşturacağız. İlk önce koleksiyondaki elemanların bitsel değerlerini ekrana yazdırıp daha sonra bitsel işlem olan Not metodunu kullanarak her bir elemanın NOT değerini ekrana yazdırıyor olacağız.

Bu yazımda bitlerle işlem yapmak için özelleşmiş .Net Platformunda hazır bulunan koleksiyon tabanlı BitArray sınıfı hakkında edindiğim bilgileri paylaşmaya çalıştım. Umarım faydalı olmuştur.

Bir sonraki yazımda System.Collection isim alanında hazır bulunan koleksiyon tabanlı Stack sınıfını inceleyeceğiz. Bu sınıfın metot ve özelliklerine değinip örnek bir uygulama ile pekiştiriyor olacağız. Bir sonraki yazımda görüşmek üzere 🙂

Kaynaklar:

Her Yönüyle C# 7.0, Sefer Algan, Pusula Yayincilik

https://docs.microsoft.com/tr-tr/dotnet/api/system.collections.bitarray?view=netframework-4.8

https://docs.microsoft.com/tr-tr/dotnet/csharp/programming-guide/concepts/collections

Leave a Comment