Ir ao conteúdo
  • Cadastre-se
Delaías de Souza

C Algoritmo que transforma binário em decimal em C

Recommended Posts

Olá amigos, estou com dificuldades em montar o algoritmo que transforma um numero binário digitado pelo usuário em decimal, alguém pode me ajudar?

Que seja de uma forma com conceitos básicos, pois preciso entender, estou cursando a graduação em ciência da computação

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para bens pelo curso! O que você precisa entender? Comece dizendo o que você sabe. E qual é a sua pergunta? E sim têm muitas pessoas aqui para ajudar.

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Delaías de Souza     Você ainda não estudou vetores , mas será mais fácil se você usar um vetor de char para guardar os dígitos binários , um vetor é uma variável que pode guardar vários dados nela ,  então se você for converter  8 bits ou qualquer quantidade ,  você usa um for e dentro dele armazena no vetor os dígitos da direita para a esquerda usando o comando scanf e depois de pegar todos os dígitos e na hora de converter  você usa um loop for começando de 7 até 0 assim você pega os dígitos armazenados da esquerda para a direita e verifica se é o dígito 1 e se for então soma o valor referente a esse bit e para isso use uma variável começando de 1 e a cada bits lido do vetor multiplique essa variável por dois ,  assim no final do loop a variável decimal conterá o valor decimal dos dígitos binários ,   faça seu código e poste aqui para vermos como está e em que podemos ajudar  .

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Delaías de Souza É o suficiente. Mas como bem disse o experiente @devair1010 com vetores é melhor daí tente fazer com e sem porque o conceito é o mesmo.

 

Eu vou explicar como fazer sem ... 

Um número binário é representação numérica com milênios de idade em que cada casa binária é um expoente da base 2 e o valor final é a soma de todas as casas da sequência. Essa sequência é decrescente, ou seja, a primeira casa da sequência é maior numericamente que a última. Essa é uma característica pertinente à todo sistema numérico. Na base décima as casas das centenas dezenas e das unidades bem como seus múltiplos e submúltiplos têm expoente de base 10 e também decrescente: 100 é o mesmo que 1*10² + 0*10¹ + 0*1. O multiplicador da potência pode ser qualquer digito entre 0 e a base - 1. Assim sendo, d * 10ⁿ | d:{1, 2, 3 ... 10-1}. O mesmos para binário onde b * 2ⁿ | b:{0, 2-1}.

 

Tentei explicar de uma maneira bem conceituada, mas se não foi o bastante pesquisa mais sobre o assunto (recomendo).

 

Para calcular um valor décima processo é bem simples, simule uma entrada por exemplo x: 100. Então o primeiro valor de x é 1 daí segue a soma...

S= S * b¹ + x | S = 0 —> n = 0.

 

Veja para x:{1, 0, 0} do meu exemplo:

S inicial é igual a zero.

S(n=0)= 0   * 10¹   + 1,   S= 1

S(n=1)= 1   * 10¹   + 0,   S= 10

S(n=2)= 10 * 10¹   + 0,   S= 100.

Ou seja, o somatório é multiplicado pela base numérica a cada ciclos (loop for) e o dígito atual em x é adicionado ao produto do somatório pela base determinando a próximo somatório ou valor.

 

Aplique esse conceito a b= 2 e o resultado será a mudança de bases.

 

Obrigado.

Mais alguma coisa?

 

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×