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 Programação Pular para comentários
Conversão binário para decimal com C# 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!

Compartilhe com seus amigos:
Quer conversar com o(a) Antonio, comente:
Carregar comentários
Últimas notícias