Conversão binário para decimal com C#

Nesse tutorial busco mostrar como fazer a conversão numérica entre decimal e binário (e vice-versa) usando C#. Let´s go!

Por | @oficinadanet Programação
Olá galera! Nesse tutorial busco mostrar como fazer a conversão numérica entre decimal e binário (e vice-versa) usando C#. Let´s go!

Primeiramente vamos entender como é representado o sistema binário. Diferentemente da numeração decimal que estamos acostumados, o sistema binário possui somente dois algarismos: 0 e 1. Esse sistema é muito usado em computação, pelo fato de o computador usual (não estamos falando de computadores quânticos) representar informações através de cargas elétricas, que podem ser negativas (um 0) ou positivas (um 1).

Abaixo segue um exemplo de um número binário, que em decimal é representado pelo número 44:
101100

Entendendo isso vamos apresentar as conversões:

BINÁRIO PARA DECIMAL

Caso eu queira converter o número para decimal, basta seguirmos os seguintes passos:
a) Inverte-se o número
b) Multiplica cada dígito por 2 elevado a um expoente, que inicialmente é zero, cujo valor aumenta em 1 unidade a cada novo dígito multiplicado.

Para visualizar melhor, veja a "Figura 1" que está em anexo, que converte o binário 001011 para decimal!
Conversão binário para decimal com C#


Agora vamos á nossa implementação!
1 - Criamos uma classe chamada ClasseBinarioDecimal.cs
2 - Criamos um método estático que será usado para inverter o número

public static string InverterString(string str){
int tamanho = str.Length;
char[] caracteres = new char[tamanho];
for (int i = 0; i < tamanho; i++){
caracteres[ i ] = str[tamanho - 1 - i];
}
return new string(caracteres);
}

    
3 - agora o método de conversão:

public static int BinarioParaDecimal(string valorBinario){
int expoente = 0;
int numero;
int soma = 0;
string numeroInvertido = InverterString(valorBinario);
for(int i = 0; i < numeroInvertido.Length; i++){
//pega dígito por dígito do número digitado
numero = Convert.ToInt32(numeroInvertido.Substring(i,1));
//multiplica o dígito por 2 elevado ao expoente, e armazena o resultado em soma
soma += numero * (int)Math.Pow(2,expoente);
// incrementa o expoente
expoente++;
}
return soma;
}

    
Existe também uma forma mais rápida de se fazer a conversão (só não coloquei antes para não perder a graça  ): O próprio C# possui um método de conversão, utilizando-se Convert:

public static int BinarioParaDecimal2(string valorBinario){
return Convert.ToInt32(valorBinario,2);
}

    

DECIMAL PARA BINÁRIO

Para converter um número decimal para binário, deve-se dividir o número decimal por 2 e obter o resto, que deve dar 1 ou 0. O resultado da divisão deve ser dividido por 2 novamente e assim sucessivamente, até que o quociente seja 0.
Ao final pegamos todos os restos, mas invertidos!

Para visualizar melhor, veja aa "Figura 2" que está em anexo!
Conversão binário para decimal com C#


Agora, a implementação!

public static string DecimalParaBinario(string numero) {
string valor = "";
int dividendo = Convert.ToInt32(numero);
if (dividendo == 0 || dividendo == 1){
return Convert.ToString(dividendo);
}
else{
while (dividendo > 0){
valor += Convert.ToString(dividendo % 2);
dividendo = dividendo / 2;
}
return InverterString(valor);
}
}

    
Crie um formulário, com um textbox (cujo name é editValor) e dois botões: um para converter o valor para decimal e outro para binário.
Segue abaixo as implementações!

CONVERTER PARA BINÁRIO

string valorBinario = ClasseBinarioDecimal.DecimalParaBinario(editValor.Text);
labelResposta.Text = "O valor ['+editValor.Text+'] convertido para binário é: ['+valorBinario+']";

    

CONVERTER PARA DECIMAL

int valorDecimal = ClasseBinarioDecimal.BinarioParaDecimal2(editValor.Text);
labelResposta.Text = "O valor ['+editValor.Text+'] convertido para decimal é: ['+valorDecimal+']";

    
Ufa! Então é isso! Em anexo estão os arquivos do tutorial, inclusive uma pequena aplicação que usa esses métodos (em SharpDevelop). Abraços!

Mais sobre: c#, programação, decimais
Share Tweet
DESTAQUESMais compartilhados
Comentários
AINDA NÃO SE INSCREVEU?

Vem ver os vídeos legais que
estamos produzindo no Youtube.