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
Os números binários são uma parte essencial da computação, e entender como trabalhar com eles em C# é crucial para lidar com operações de baixo nível, manipulações bit a bit e armazenamento eficiente. Neste artigo, vamos analisar os principais conceitos de armazenamento e exibição de valores binários em C#, seguindo o vídeo de Tim Corey, "Binary in C#: Storing and Displaying Binary Values in 10 minutes or less" ( Binário em C#: Armazenando e exibindo valores binários em 10 minutos ou menos) .
Tim explica este tópico de forma concisa, porém detalhada, facilitando a compreensão. Vamos analisar passo a passo a sua explicação e explorar como os valores binários funcionam em C#.
Tim começa abordando a questão central: como armazenamos um número binário em C#? Ele explica que números binários, como 0b101, representam valores em base-2 e são armazenados em variáveis inteiras.
Para armazenar um valor binário, Tim demonstra a seguinte sintaxe:
int binaryValue = 0b101; // Represents the decimal number 5Dim binaryValue As Integer = &B101 ' Represents the decimal number 5Aqui, 0b é um prefixo que informa ao C# para interpretar os dígitos seguintes como um número binário. Tim destaca que 0b101 é equivalente a 5 na notação decimal.
Ele também observa que adicionar zeros à esquerda (por exemplo, 0b00000101) não altera o valor. O sistema ainda interpreta como 5 porque esses zeros extras não têm significado numérico.
Após armazenarmos um valor binário, o próximo passo é exibi-lo. Tim destaca um comportamento interessante: quando você imprime um valor armazenado em binário, o C# o converte para decimal por padrão.
Por exemplo:
Console.WriteLine($"Binary value is: {binaryValue}");
// Outputs: Binary value is: 5Console.WriteLine($"Binary value is: {binaryValue}")
' Outputs: Binary value is: 5Embora binaryValue tenha sido armazenado como 0b101, o console exibirá 5. Tim explica que o C# trabalha com base-10 por padrão quando exibe valores numéricos.
Para visualizar o valor em formato binário, precisamos realizar uma conversão.
Tim apresenta uma maneira simples de formatar um número inteiro como uma string binária:
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: 101Ele explica que Convert.ToString(value, 2) converte um inteiro para sua representação binária como uma string. Dessa forma, se você armazenou 0b101, o console agora exibirá corretamente 101 em vez de 5.
Tim então aborda um problema que surge frequentemente ao exibir números binários: formatá-los de forma consistente com zeros à esquerda. Em muitos casos, queremos que um número binário apareça em formato de 8 bits (por exemplo, 00000101 em vez de apenas 101).
Ele explica como conseguir isso usando 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: 00000101Aqui, PadLeft(8, '0') garante que a string binária sempre tenha pelo menos 8 caracteres, preenchendo quaisquer espaços faltantes com zeros. Isso é especialmente útil ao lidar com valores binários de tamanho byte.
Tim esclarece que as aspas simples em torno de '0' são necessárias porque PadLeft trabalha com caracteres, não strings.
Outro ponto importante que Tim faz é que você não precisa inserir números em formato binário (notação 0b) para obter sua representação binária.
Por exemplo, você pode pegar um número decimal padrão e convertê-lo para binário:
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 1100Aqui, o número 12 é armazenado como um inteiro decimal, mas quando convertido, ele exibe corretamente 1100 em binário.
Tim enfatiza que essa técnica é útil para depurar e entender como os números são armazenados no nível de bits.
Tim também aborda como valores binários podem ser armazenados em diferentes tipos de dados numéricos. Embora inteiros (int) sejam os mais comuns, o C# permite armazenar valores binários em outros tipos como uint (inteiro sem sinal) ou long.
Por exemplo:
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 numberA principal diferença com uint é que ele não suporta valores negativos, enquanto long pode armazenar números muito maiores.
Tim observa que entender essas distinções ajuda ao trabalhar com operações de baixo nível, como deslocamentos bit a bit e mascaramento.
Tim conclui resumindo os principais pontos:
0b.Convert.ToString(value, 2) ajuda a converter números em formato binário.PadLeft garante uma representação consistente de comprimento de bits.Com essas técnicas, trabalhar com valores binários em C# torna-se muito mais fácil e intuitivo. Para entender melhor o assunto, assista ao vídeo completo dele.
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