About Me

header ads

(C++) EK.O.1 — std::bitset ile Bit flagları and bit manipulationu

Modern bilgisayar mimarilerinde, adreslenebilir en küçük bellek birimi bir bayttır. Tüm nesnelerin benzersiz bellek adreslerine sahip olması gerektiğinden, bu, nesnelerin boyut olarak en az bir bayt olması gerektiği anlamına gelir. Çoğu değişken tür için bu iyidir. Bununla birlikte, Boole değerleri için bu biraz israftır. Boole türlerinin yalnızca iki durumu vardır: true (1) veya false (0). Bu durum kümesi, depolamak için yalnızca bir bit gerektirir. Bununla birlikte, bir değişkenin en az bir bayt olması gerekiyorsa ve bir bayt 8 bit ise, bu, bir Boolean'ın 1 bit kullandığı ve diğer 7'yi kullanılmadığı anlamına gelir. Çoğu durumda, bu sorun değil - genellikle hafızayı o kadar zorlamıyoruz ki, boşa harcanan 7 biti önemsememiz gerekiyor (anlaşılabilirlik ve sürdürülebilirlik için optimize etmekten daha iyiyiz). Ancak, depolamanın yoğun olduğu bazı durumlarda, depolama verimliliği amacıyla 8 ayrı Boole değerini tek bir baytta "paketlemek" yararlı olabilir. Bunları yapmak, nesneleri bit seviyesinde değiştirebilmemizi gerektirir. Neyse ki, C ++ bize bunu tam olarak yapmamız için araçlar sağlar. Bir nesne içindeki tek tek bitlerin değiştirilmesine bit manipülasyonu denir. Bit manipülasyonu, şifreleme ve sıkıştırma algoritmalarında da yararlıdır.

Yorum Gönder

0 Yorumlar