Wartości binarne w C#: Zapisywanie i wyświetlanie wartości binarnych
Liczby binarne są nieodłączną częścią informatyki, a zrozumieniuiuiuiuie, 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 zrozumieniuiuiuiuie. Przejdźmy krok po kroku przez jego wyjaśnienie i odkryjmy, jak działają wartości binarne w C#.
Storing Binary Values in 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 typu całkowitego.
Aby przechować wartość binarną, Tim demonstruje następującą składnię:
int binaryValue = 0b101; // Represents the decimal number 5
int binaryValue = 0b101; // Represents the decimal number 5
Tutaj, 0b to prefiks, który mówi C#, aby interpretować kolejne cyfry jako liczbę binarną. Tim podkreśla, że 0b101 jest równoważne 5 w notacji dziesiętnej.
Zauważa również, że dodanie zer wiodących (np. 0b00000101) nie zmienia wartości. System wciąż interpretuje to jako 5, ponieważ dodatkowe zera nie mają znaczenia numerycznego.
Printing Binary Values in C
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: 5
Console.WriteLine($"Binary value is: {binaryValue}");
// Outputs: Binary value is: 5
Mimo że binaryValue została przechowana 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.
Konwertowanie całkowitych na format binarny
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: 101
string binaryString = Convert.ToString(binaryValue, 2);
Console.WriteLine($"Binary representation: {binaryString}");
// Outputs: Binary representation: 101
Wyjaśnia, że Convert.ToString(value, 2) konwertuje liczbę całkowitą na jej reprezentację binarną jako ciąg tekstowy. W ten sposób, jeśli przechowałeś 0b101, konsola teraz poprawnie wyświetli 101 zamiast 5.
Uzupełnianie wartości binarnych zerami wiodącymi
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ąć, używając PadLeft:
string formattedBinary = binaryString.PadLeft(8, '0');
Console.WriteLine($"Formatted binary: {formattedBinary}");
// Outputs: Formatted binary: 00000101
string formattedBinary = binaryString.PadLeft(8, '0');
Console.WriteLine($"Formatted binary: {formattedBinary}");
// Outputs: Formatted binary: 00000101
Tutaj, PadLeft(8, '0') zapewnia, że ciąg binarny zawsze ma co najmniej 8 znaków, wypeł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ą wymagańe, ponieważ PadLeft działa na znakach, a nie ciągach.
Reprezentacja binarna liczb dziesiętnych
Inny ważny punkt, który porusza Tim, to fakt, że nie musisz wprowadzać liczb w formacie binarnym (0b notacja), aby uzyskać ich reprezentację binarną.
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 1100
int decimalNumber = 12;
string binaryRepresentation = Convert.ToString(decimalNumber, 2);
Console.WriteLine($"Binary equivalent of {decimalNumber} is {binaryRepresentation}");
// Outputs: Binary equivalent of 12 is 1100
Tutaj liczba 12 jest przechowywana jako liczba całkowita dziesiętna, ale po przekonwertowaniu poprawnie zwraca 1100 jako binarną.
Tim podkreśla, że ta technika jest przydatna do debugowania i zrozumieniuiuiuiuia, jak liczby są przechowywane na poziomie bitowym.
Przechowywanie liczb binarnych w różnych typach danych
Tim również dotyka tematu, jak wartości binarne mogą być przechowywane w różnych typach danych numerycznych. Chociaż liczby całkowite (int) są najczęstsze, C# pozwala na przechowywanie wartości binarnych w innych typach jak uint (bez znaku) czy long.
Na przykład:
uint unsignedBinary = 0b1010; // 10 in decimal
long largeBinary = 0b1100110011; // A longer binary number
uint unsignedBinary = 0b1010; // 10 in decimal
long largeBinary = 0b1100110011; // A longer binary number
Kluczową różnicą z uint jest to, że nie obsługuje wartości ujemnych, podczas gdy long może przechowywać znacznie większe liczby.
Tim zaznacza, że zrozumieniuiuiuiuie tych różnic pomaga przy pracy z operacjami niskiego poziomu jak przesunięcia bitowe i maskowanie.
Podsumowanie
Tim kończy, podsumowując kluczowe wnioski:
- Liczby binarne są przechowywane w typach całkowitych, korzystając z prefiksu
0b. - Drukowanie liczby całkowitej domyślnie przedstawia ją w formacie dziesiętnym, wymagając jawnej konwersji dla wyjścia binarnego.
Convert.ToString(value, 2)pomaga konwertować liczby na format binarny.PadLeftzapewnia spójną reprezentację w określonej liczbie bitów.- Możesz przechowywać liczby binarne w różnych typach danych numerycznych, w zależności od zastosowania.
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.



