C# - Convertendo binário para decimal e vice-versa
Hoje veremos uma operação fundamental que todo o programador C# deve saber : converter binário para decimal e vice-versa. |
O sistema binário possui somente dois algarismos: 0 e 1.
Esse sistema é muito usado nos computadores, pois o computador representa informações através de cargas elétricas, que podem ser positivas (1) ou ser negativas (0).
Conversão Decimal/Binário e vice-versa
1- Para converter um número de binário para decimal podemos fazer assim:
Exemplo: Converter o binário 10101 para decimal. Invertendo 10101 obtemos 10101:
1 x 2^0 | 1 |
0 x 2^1 | 0 |
1 x 2^2 | 4 |
0 x 2^3 | 0 |
1 x 2^4 | 16 |
O número decimal é obtido somando os resultados: 1 + 0 + 4 + 0 + 16 = 21
O resultado é que 10101 é igual a 21.
2- Para converter um número decimal para binário podemos fazer assim:
Exemplo: Converter o número 12 para binário
Resto | ||
12 / 2 | 6 | 0 |
6 / 2 | 3 | 0 |
3 / 2 | 1 | 1 |
1 / 2 | 0 | 1 |
Então bora pró código fazer a implementação na linguagem C#.
recursos:
Criando o projeto Console .NET Core no VS 2019
Crie um projeto Console do tipo .NET Core chamado CShp_ConversaoBinariaDecimal;
Crie a classe Conversor no projeto com o código abaixo:
using System;
using System.Linq;
namespace CShp_ConversaoBinariaDecimal
{
class Conversor
{
public static int BinarioDecimal(string numeroBinario)
{
int expoente = 0;
int numero;
int soma = 0;
string numeroInvertido = ReverteString(numeroBinario);
for (int i = 0; i < numeroInvertido.Length; i++)
{
numero = Convert.ToInt32(numeroInvertido.Substring(i, 1));
soma += numero * (int)Math.Pow(2, expoente);
expoente++;
}
return soma;
}
public static string DecimalBinario(string numeroDecimal)
{
string valor = "";
int dividendo = Convert.ToInt32(numeroDecimal);
if (dividendo == 0 || dividendo == 1)
{
return Convert.ToString(dividendo);
}
else
{
while (dividendo > 0)
{
valor += Convert.ToString(dividendo % 2);
dividendo = dividendo / 2;
}
return ReverteString(valor);
}
}
public static string ReverteString(string str)
{
return new string(str.Reverse().ToArray());
}
}
}
|
Definimos neste código os seguintes métodos:
Agora para testar vamos definir o código no arquivo Program.cs conforme abaixo:
using System;
namespace CShp_ConversaoBinariaDecimal
{
class Program
{
static void Main(string[] args)
{
string opcao;
do
{
Console.WriteLine("Escolha a sua opção :");
Console.WriteLine("\tb - Converter Binário para Decimal");
Console.WriteLine("\td - Converter Decimal para Binário");
Console.WriteLine("\tq - Encerra o programa");
Console.Write("Sua opção ? ");
opcao = Console.ReadLine();
switch (opcao)
{
case "b":
ConverteBinarioParaDecimal();
break;
case "d":
ConverteDecimalParaBinario();
break;
case "q":
Console.WriteLine("Bye.");
break;
}
Console.ReadKey();
} while (opcao != "Q" && opcao != "q");
}
private static void ConverteDecimalParaBinario()
{
Console.WriteLine("Informe o numero decimal a converter");
string valor = Console.ReadLine();
string resultado = Conversor.DecimalBinario(valor);
Console.WriteLine($" O numero {valor} é igual a {resultado} ");
Console.WriteLine();
}
private static void ConverteBinarioParaDecimal()
{
Console.WriteLine("Informe o numero binário.");
string valor = Console.ReadLine();
int resultado = Conversor.BinarioDecimal(valor);
Console.WriteLine($" O numero {valor} é igual a {resultado} ");
Console.WriteLine();
}
}
}
|
Executando o programa iremos obter o seguinte resultado:
Pegue o projeto completo aqui: CShp_ConversaoBinariaDecimal.zip
"Levantarei os
meus olhos para os montes, de onde vem o meu socorro.
O meu socorro vem do Senhor que fez o céu e a terra."
Salmos 121:1,2
Referências: