Ir ao conteúdo
  • Cadastre-se

Como faço para converter binario em decimal no C#!!!!


adler_coelho16

Posts recomendados

Tenho q fazer um programa no C# que converta números binários em decimais.Se o usuário digitar menos ou mais de oito caracteres, o programa tem que informar mensagem dizendo q são 8 numeros.E se o usuario digitar, por exemplo, "54931010" ....o programa tem q mandar uma mensagem dizendo q só podem ser digitados 1 e 0.

Link para o comentário
Compartilhar em outros sites

Tenho q fazer um programa no C# que converta números binários em decimais.Se o usuário digitar menos ou mais de oito caracteres, o programa tem que informar mensagem dizendo q são 8 numeros.E se o usuário digitar, por exemplo, "54931010" ....o programa tem q mandar uma mensagem dizendo q só podem ser digitados 1 e 0.

Você não sabe a lógica do programa, ou escrever o programa em C#?

Qual sua dúvida?

Abs

Link para o comentário
Compartilhar em outros sites

vamos lá, nunca programei em C# não conheço o que a linguagem permite fazer com strings então vou escrever algum exemplo em C

captura a entrada e joga em uma string no caso de C

char num[9];

primeira coisa é captura e validação dos dados

scanf("%8s", num);

if(strlen(num) != 8) // verifica se tem 8 caracteres o numero

printf("Erro!\n");

for(i = strlen(num); i >= 0 && (num == '0' || num == '1' ); i--); // percorre a string checando se possui apenas os valores 0 e 1

if(i >= 0) // se só posuir 0 e 1, o for só irá parar quando i for menor que 0

printf("Erro!\n");

agora vem a mágica que você empacou (pelo - eu acho que foi aqui)

converter o numero 1111 1111 para 255

em C eu provavelmente converteria o valor de cada caracter para numero faria um shiftleft nos bits e os combinaria com um OR

mas em linguagens de + alto nivel, fazer tal coisa ia ser no mínimo difícil

então vamos fazer o que seu Prof. quer, esse problema é bem parecido com aqueles de Calculo de CPF (particularmente CPF é + difícil) em compensação ele exige que você se lembre, das aulinhas de calculo de numeros binarios vamos relembrar, é o teorema fundamental da Numeração (ask google)

em resumo, cada posição entre os bits tem um valor correspondente em decimal (o teorema calcula e soma tudo) no caso dos 8 bits os valores são

128 64 32 16 8 4 2 1

1 1 1 1 1 1 1 1

esse foi o exemplo que dei acima (todos os bits em 1) vale 255 vamos fazer a soma

1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255

pelo teorema fundamental a formula que teriamos seria + ou - assim

1*1 + 1*2 + 1*4 + 1*8 + 1*16 + 1*32 + 1*64 + 1*128 = 255

se tivéssemos o numero 0111 1111 o resultado seria = 127

pelo teorema

1*1 + 1*2 + 1*4 + 1*8 + 1*16 + 1*32 + 1*64 + 0*128 = 127

repare que o BIT que representa o 128 esta desligado. por isso 0*128 = 0

podemos reescrever esse procedimento em linguagem de programação

em C:

int valorBit = 1;

int i;

int resultado = 0;

for(i = 8; i >= 0; i--){

resultado += ((unsigned char) (num - '0')) * valorBit;

valorBit *= 2;

}

basicamente pego o caracter na ultima posição da string converto pra numero (num - '0', conversão porca eu sei) e multiplico pelo valor do "BIT" em questao, e acumulo em resultado

depois multiplico o valorBit por 2 para reproduzir a serie de numeros (1 2 4 8 16...)

bem amigo fui bem passo a passo, espero ter dado 1 luz na teoria do que você tem de fazer, agora basta adaptar a lógica para C#

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...