Valores binarios en C#: Almacenamiento y visualización de valores binarios
Los números binarios son una parte esencial de la computación, y entender cómo trabajar con ellos en C# es crucial para manejar operaciones de bajo nivel, manipulaciones bit a bit y almacenamiento eficiente. En este artículo, desglosaremos los conceptos clave del almacenamiento y la visualización de valores binarios en C#, siguiendo el vídeo de Tim Corey, Binary in C#: Almacenamiento y visualización de valores binarios en 10 minutos o menos.
Tim explica este tema de forma concisa pero detallada, lo que facilita su comprensión. Vayamos paso a paso a través de su explicación y exploremos cómo funcionan los valores binarios en C#.
Storing Binary Values in C
Tim comienza abordando la pregunta central: ¿cómo se almacena un número binario en C#? Él explica que los números binarios, como 0b101, representan valores en base 2 y se almacenan en variables enteras.
Para almacenar un valor binario, Tim muestra la siguiente sintaxis:
int binaryValue = 0b101; // Represents the decimal number 5
int binaryValue = 0b101; // Represents the decimal number 5
Aquí, 0b es un prefijo que indica a C# interpretar los dígitos siguientes como un número binario. Tim señala que 0b101 es equivalente a 5 en notación decimal.
También menciona que añadir ceros a la izquierda (por ejemplo, 0b00000101) no cambia el valor. El sistema sigue interpretándolo como 5 porque esos ceros de más no tienen significado numérico.
Printing Binary Values in C
Una vez que almacenamos un valor binario, el siguiente paso es mostrarlo. Tim señala un comportamiento interesante: cuando se imprime un valor almacenado en binario, C# lo convierte en decimal por defecto.
Por ejemplo:
Console.WriteLine($"Binary value is: {binaryValue}");
// Outputs: Binary value is: 5
Console.WriteLine($"Binary value is: {binaryValue}");
// Outputs: Binary value is: 5
Aunque binaryValue se almacenó como 0b101, la consola mostrará 5. Tim explica que C# trabaja con base 10 por defecto al mostrar valores numéricos.
Para ver el valor en su formato binario, necesitamos una conversión.
Conversión de números enteros a formato binario
Tim presenta una forma sencilla de formatear un número entero como cadena binaria:
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
Él explica que Convert.ToString(value, 2) convierte un entero a su representación binaria como una cadena. De esta manera, si has almacenado 0b101, la consola ahora mostrará correctamente 101 en lugar de 5.
Colocación de valores binarios con ceros a la izquierda
A continuación, Tim aborda un problema que suele surgir al mostrar números binarios: darles un formato coherente con ceros a la izquierda. En muchos casos, queremos que un número binario aparezca en un formato de 8 bits (por ejemplo, 00000101 en lugar de solo 101).
Él explica cómo lograr esto usando 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
Aquí, PadLeft(8, '0') asegura que la cadena binaria siempre tenga al menos 8 caracteres, llenando los espacios faltantes con ceros. Esto es especialmente útil cuando se trata de valores binarios del tamaño de un byte.
Tim aclara que las comillas simples alrededor de '0' son necesarias porque PadLeft trabaja con caracteres, no con cadenas.
Representación binaria de números decimales
Otro punto importante que Tim menciona es que no tienes que ingresar números en formato binario (notación 0b) para obtener su representación binaria.
Por ejemplo, se puede tomar un número decimal estándar y convertirlo a binario:
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
Aquí, el número 12 se almacena como un entero decimal, pero cuando se convierte, muestra correctamente 1100 en binario.
Tim destaca que esta técnica es útil para depurar y comprender cómo se almacenan los números a nivel de bits.
Almacenamiento de números binarios en diferentes tipos de datos
Tim también aborda cómo los valores binarios pueden almacenarse en diferentes tipos de datos numéricos. Aunque los enteros (int) son los más comunes, C# permite almacenar valores binarios en otros tipos como uint (entero sin signo) o long.
Por ejemplo:
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
La diferencia clave con uint es que no admite valores negativos, mientras que long puede contener números mucho más grandes.
Tim señala que comprender estas distinciones ayuda a la hora de trabajar con operaciones de bajo nivel, como los desplazamientos de bits y el enmascaramiento.
Reflexiones finales
Tim concluye resumiendo los puntos clave:
- Los números binarios se almacenan en tipos enteros usando el prefijo
0b. - La impresión de un número entero se realiza por defecto en representación decimal, por lo que se requiere una conversión explícita para la salida binaria.
Convert.ToString(value, 2)ayuda a convertir números en formato binario.PadLeftasegura una representación consistente de longitud de bits.- Se pueden almacenar números binarios en diferentes tipos numéricos, dependiendo del caso de uso.
Con estas técnicas, trabajar con valores binarios en C# resulta mucho más fácil e intuitivo. Para comprender mejor el tema, vea su vídeo completo.



