• Announcements

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   02/14/2016

      Prezados membros do Fórum do Clube do Hardware,

      Está aberto o processo de seleção de novos moderadores para diversos setores do fórum. Os requisitos são:
        Pelo menos 1000 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas ao formulário abaixo:    Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • dif

      Poste seus códigos corretamente!   05/22/2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
adler_coelho16

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

7 posts in this topic

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.

Share this post


Link to post
Share on other sites

Sub-Forum errado, aqui é C/C++

C# é abordado no .Net

Share this post


Link to post
Share on other sites

valeu pelo aviso...não tinha percebido.:D

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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#

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now