Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Tim Corey
9m 43s
Liczby binarne są nieodłączną częścią informatyki, a zrozumienie, jak pracować z nimi w C# jest kluczowe do wykonywania operacji na niskim poziomie, manipulacji bitowych i efektywnego przechowywania. W tym artykułe omówimy kluczowe pojęcia dotyczące przechowywania i wyświetlania wartości binarnych w C#, zgodnie z filmem Tima Coreya, Binary in C#: Storing and Displaying Binary Values in 10 minutes or less.
Tim wyjaśnia ten temat w sposób zwięzły, ale szczegółowy, ułatwiając jego zrozumienie. Przejdźmy krok po kroku przez jego wyjaśnienie i odkryjmy, jak działają wartości binarne w C#.
Tim zaczyna od odpowiedzi na kluczowe pytanie: jak przechowujemy liczbę binarną w C#? Wyjaśnia, że liczby binarne, takie jak 0b101, reprezentują wartości w systemie dwójkowym i są przechowywane w zmiennych całkowitych.
Aby przechować wartość binarną, Tim demonstruje następującą składnię:
int binaryValue = 0b101; // Represents the decimal number 5Dim binaryValue As Integer = &B101 ' Represents the decimal number 5Tutaj 0b jest prefiksem, który informuje C#, aby interpretował następujące cyfry jako liczbę binarną. Tim podkreśla, że 0b101 jest równoważne 5 w notacji dziesiętnej.
Zaznacza również, że dodanie zer na początku (np. 0b00000101) nie zmienia wartości. System wciąż interpretuje to jako 5, ponieważ dodatkowe zera nie mają znaczenia numerycznego.
Gdy przechowamy wartość binarną, kolejnym krokiem jest jej wyświetlenie. Tim wskazuje na interesujące zachowanie: gdy drukujesz wartość przechowaną binarnie, C# domyślnie konwertuje ją na dziesiętną.
Na przykład:
Console.WriteLine($"Binary value is: {binaryValue}");
// Outputs: Binary value is: 5Console.WriteLine($"Binary value is: {binaryValue}")
' Outputs: Binary value is: 5Mimo że binaryValue zostało zapisane jako 0b101, konsola wyświetli 5. Tim wyjaśnia, że C# domyślnie działa w systemie dziesiętnym podczas wyświetlania wartości numerycznych.
Aby zobaczyć wartość w formacie binarnym, potrzebujemy konwersji.
Tim wprowadza prosty sposób formatowania liczby całkowitej jako ciągu binarnego:
string binaryString = Convert.ToString(binaryValue, 2);
Console.WriteLine($"Binary representation: {binaryString}");
// Outputs: Binary representation: 101Dim binaryString As String = Convert.ToString(binaryValue, 2)
Console.WriteLine($"Binary representation: {binaryString}")
' Outputs: Binary representation: 101Wyjaśnia, że Convert.ToString(value, 2) konwertuje liczbę całkowitą na jej binarną reprezentację jako string. W ten sposób, jeśli zapisałeś 0b101, konsola teraz poprawnie wyświetli 101 zamiast 5.
Tim następnie rozwiązuje problem, który często pojawia się przy wyświetlaniu liczb binarnych: formatowanie ich konsekwentnie z zerami wiodącymi. W wielu przypadkach chcemy, aby liczba binarna pojawiała się w formacie 8-bitowym (np. 00000101 zamiast tylko 101).
Wyjaśnia, jak to osiągnąć za pomocą PadLeft:
string formattedBinary = binaryString.PadLeft(8, '0');
Console.WriteLine($"Formatted binary: {formattedBinary}");
// Outputs: Formatted binary: 00000101Dim formattedBinary As String = binaryString.PadLeft(8, "0"c)
Console.WriteLine($"Formatted binary: {formattedBinary}")
' Outputs: Formatted binary: 00000101Tutaj PadLeft(8, '0') zapewnia, że binarny string zawsze ma przynajmniej 8 znaków, uzupełniając brakujące miejsca zerami. Jest to szczególnie przydatne przy pracy z wartościami binarnymi o rozmiarze bajta.
Tim wyjaśnia, że pojedyncze cudzysłowy wokół '0' są wymagane, ponieważ PadLeft działa z znakami, a nie stringami.
Kolejny ważny punkt, który Tim porusza, to że nie musisz wprowadzać liczb w formacie binarnym (notacja 0b), aby uzyskać ich binarną reprezentację.
Na przykład możesz wziąć standardową liczbę dziesiętną i przekonwertować ją na binarną:
int decimalNumber = 12;
string binaryRepresentation = Convert.ToString(decimalNumber, 2);
Console.WriteLine($"Binary equivalent of {decimalNumber} is {binaryRepresentation}");
// Outputs: Binary equivalent of 12 is 1100Dim decimalNumber As Integer = 12
Dim binaryRepresentation As String = Convert.ToString(decimalNumber, 2)
Console.WriteLine($"Binary equivalent of {decimalNumber} is {binaryRepresentation}")
' Outputs: Binary equivalent of 12 is 1100Tutaj liczba 12 jest przechowywana jako liczba całkowita w systemie dziesiętnym, ale po konwersji poprawnie wyświetla 1100 w systemie binarnym.
Tim podkreśla, że ta technika jest przydatna do debugowania i zrozumienia, jak liczby są przechowywane na poziomie bitowym.
Tim również dotyka zagadnienia, jak wartości binarne mogą być przechowywane w różnych typach danych numerycznych. Chociaż liczby całkowite (int) są najczęstsze, C# pozwala przechowywać wartości binarne w innych typach, takich jak uint (liczba całkowita bez znaku) czy long.
Na przykład:
uint unsignedBinary = 0b1010; // 10 in decimal
long largeBinary = 0b1100110011; // A longer binary numberDim unsignedBinary As UInteger = &B1010 ' 10 in decimal
Dim largeBinary As Long = &B1100110011 ' A longer binary numberKluczowa różnica w przypadku uint polega na tym, że nie obsługuje ona wartości ujemnych, podczas gdy long może przechowywać znacznie większe liczby.
Tim zaznacza, że zrozumienie tych różnic pomaga przy pracy z operacjami niskiego poziomu jak przesunięcia bitowe i maskowanie.
Tim kończy, podsumowując kluczowe wnioski:
0b.Convert.ToString(value, 2) pomaga konwertować liczby na format binarny.PadLeft zapewnia spójne przedstawienie długości bitowej.Dzięki tym technikom praca z wartościami binarnymi w C# staje się znacznie łatwiejsza i bardziej intuicyjna. Aby lepiej zrozumieć temat, obejrzyj jego pełny film.
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy