C#'ta İkili Değerler: İkili Değerleri Saklama ve Görüntüleme
İkili sayılar, bilgisayar biliminin temel bir parçasıdır ve C# 'ta bunlarla çalışmayı anlamak, düşük seviye işlemleri, bit düzeyinde manipülasyonları ve verimli depolamayı yönetmek için önemlidir. Bu makalede, Tim Corey'nin Binary in C#: Storing and Displaying Binary Values in 10 minutes or less videosunu takip ederek, C# dilinde ikili değerleri depolama ve görüntüleme ile ilgili ana kavramları ele alacağız.
Tim, bu konuyu özlü fakat detaylı bir şekilde açıklayarak anlamayı kolaylaştırıyor. Şimdi onun açıklamasını adım adım inceleyelim ve C#'da ikili değerlerin nasıl çalıştığını keşfedelim.
Storing Binary Values in C
Tim, temel soruya değinerek başlıyor: C#'ta ikili bir sayıyı nasıl depolarız? Binary sayılar, 0b101 gibi, 2 tabanlı değerleri temsil eder ve tamsayı değişkenlerine kaydedilir.
Tim, bir ikili değeri depolamak için aşağıdaki söz dizimini göstermektedir:
int binaryValue = 0b101; // Represents the decimal number 5int binaryValue = 0b101; // Represents the decimal number 5Burada, 0b, takip eden rakamların binary sayı olarak yorumlanmasını söyleyen bir ön ektir. Tim, 0b101'in ondalık gösterimde 5'e eşdeğer olduğunu vurgular.
Ayrıca, ön ek gösteren sıfırların eklenmesi (örneğin, 0b00000101) değeri değiştirmez, diye not eder. Sistem, bu fazladan sıfırların sayısal bir önemi olmadığından, hala bunu 5 olarak yorumlar.
Printing Binary Values in C
İkili bir değeri depoladıktan sonra, bir sonraki adım onu görüntülemektir. Tim ilginç bir davranışı belirtir: İkili olarak saklanan bir değeri yazdırdığınızda, C# bunu varsayılan olarak ondalık sayıya dönüştürür.
Örneğin:
Console.WriteLine($"Binary value is: {binaryValue}");
// Outputs: Binary value is: 5Console.WriteLine($"Binary value is: {binaryValue}");
// Outputs: Binary value is: 5Her ne kadar binaryValue, 0b101 olarak saklanmış olsa da, konsol 5'i gösterir. Tim, C#'ın varsayılan olarak sayısal değerleri gösterirken 10 tabanı kullandığını açıklar.
Değerin ikili formatını görmek için bir dönüşüm gereklidir.
Tam Sayıların İkili Formata Dönüştürülmesi
Tim, bir tamsayıyı ikili bir dize olarak biçimlendirmenin basit bir yolunu tanıtıyor:
string binaryString = Convert.ToString(binaryValue, 2);
Console.WriteLine($"Binary representation: {binaryString}");
// Outputs: Binary representation: 101string binaryString = Convert.ToString(binaryValue, 2);
Console.WriteLine($"Binary representation: {binaryString}");
// Outputs: Binary representation: 101O, Convert.ToString(value, 2) ile bir tamsayıyı sanki binary temsilini bir diziye dönüştürüyor gibi açıklar. Bu şekilde, eğer 0b101 saklarsanız, konsol artık doğru bir şekilde 101 yerine 5'i gösterecektir.
İkili Değerleri Başlangıç Sıfırları ile Doldurma
Tim daha sonra ikili sayılar gösterildiğinde sıkça ortaya çıkan bir sorunu ele alır: önde gelen sıfırlarla tutarlı bir şekilde formatlamak. Birçok durumda, binary bir sayının 8-bit formatta görünmesini isteriz (örneğin, sadece 101 yerine 00000101).
Bunu PadLeft kullanarak nasıl başaracağımızı açıklar:
string formattedBinary = binaryString.PadLeft(8, '0');
Console.WriteLine($"Formatted binary: {formattedBinary}");
// Outputs: Formatted binary: 00000101string formattedBinary = binaryString.PadLeft(8, '0');
Console.WriteLine($"Formatted binary: {formattedBinary}");
// Outputs: Formatted binary: 00000101Burada, PadLeft(8, '0'), binary dizenin her zaman en az 8 karakter uzunluğunda olmasını sağlar, eksik kalan boşlukları sıfırlarla doldurur. Bu, bayt büyüklüğündeki ikili değerlerle çalışırken özellikle faydalıdır.
Tim, '0' etrafındaki tek tırnakların gerektiğini çünkü PadLeft karakterlerle çalıştığını, dizelerle değil, açıklığa kavuşturur.
Ondalık Sayıların İkili Gösterimi
Tim'in yaptığı diğer önemli bir nokta, binary temsilini elde etmek için sayıları binary formatında (0b notasyonu) girmenize gerek olmadığınıdır.
Örneğin, standart bir ondalık sayıyı ikili sayı sistemine dönüştürebilirsiniz:
int decimalNumber = 12;
string binaryRepresentation = Convert.ToString(decimalNumber, 2);
Console.WriteLine($"Binary equivalent of {decimalNumber} is {binaryRepresentation}");
// Outputs: Binary equivalent of 12 is 1100int decimalNumber = 12;
string binaryRepresentation = Convert.ToString(decimalNumber, 2);
Console.WriteLine($"Binary equivalent of {decimalNumber} is {binaryRepresentation}");
// Outputs: Binary equivalent of 12 is 1100Burada, sayı 12 ondalık bir tamsayı olarak saklanır, ancak dönüştürüldüğünde, binary olarak doğru bir şekilde 1100 çıktısı verir.
Tim, bu tekniğin hata ayıklama ve sayıların bit düzeyinde nasıl depolandığını anlama konusunda faydalı olduğunu vurgular.
İkili Sayıların Farklı Veri Türlerinde Depolanması
Tim, ayrıca, binary değerlerin farklı sayısal veri türlerinde saklanabilmesi üzerinde durur. Tamsayılar (int) en yaygın olanıdır, fakat C# binary değerleri uint (unsigned integer) veya long gibi diğer türlerde saklamaya izin verir.
Örneğin:
uint unsignedBinary = 0b1010; // 10 in decimal
long largeBinary = 0b1100110011; // A longer binary numberuint unsignedBinary = 0b1010; // 10 in decimal
long largeBinary = 0b1100110011; // A longer binary numberuint ile temel fark, negatif değerleri desteklememesidir, oysa ki long çok daha büyük sayıları barındırabilir.
Tim, bu ayrımları anlamanın bit düzeyinde kaydırmalar ve maskeleme gibi düşük seviyeli işlemlerle çalışırken yardımcı olduğunu not eder.
Son Düşünceler
Tim, ana çıkarımları özetleyerek sona eriyor:
- Binary sayılar,
0bprefixi kullanılarak tamsayı türlerinde saklanır. - Bir tam sayıyı yazdırmak varsayılan olarak ondalık gösterimdir, ikili çıktı için açık dönüşüm gerektirir.
Convert.ToString(value, 2), sayıları binary formata dönüştürmeye yardımcı olur.PadLefttutarlı bit uzunluklu bir temsil sağlar.- İkili sayıları, kullanım durumuna bağlı olarak farklı sayısal türlerde depolayabilirsiniz.
Bu tekniklerle, C# dilinde ikili değerlerle çalışmak çok daha kolay ve daha sezgisel hale gelir. Konuyu daha iyi anlamak için onun tam videosunu izleyin.




