Dificuldade em conversão binario para decimal

1. Dificuldade em conversão binario para decimal

Felipe Roque de Albuquerque Neto
FelipeRoque

(usa Ubuntu)

Enviado em 18/02/2018 - 12:51h

Boa tarde pessoal, estou com uma dificuldade de fazer conversão binario para decimal no meu codigo, estou com problemas em começar, alguem poderia me dar uma help?

Code:
#include<stdlib.h>
#include<stdio.h>
#include<math.h>

int main(){

int i,j,rest,decimal,binary[999];
int choose;

printf("\t\t\t Choose the option you want below\n\n");

printf("1.If you prefer Decimal to Binary type 1: "); // Menu de seleção 1
scanf("%i",&choose); // guarda valor recebido
printf("2.If you prefer Binary to Decimal type 2: "); // Menu de seleção 2
scanf("%i",&choose); // guarda valor recebido


switch(choose){

case 1:

printf("Type de Decimal Number here: "); // Pede o numero decimal
scanf("%i",&decimal); // ler o numero decimal digitado

int n = decimal; // atribui o valor da variavel inteira n para receber o valor de decimal
i=0;

while(decimal > 0) // Enquanto o numero digitado for maior que zero
{
rest = decimal % 2; // resto recebe o valor que sobra na divisão do numero decimal por 2
binary[i] = rest; // Vetor binario guarda o resto da divisão do numero decimal por 2
decimal = decimal/2; // Decimal recebe o valor dele dividido por 2
i++; // incrementar o loop
}

printf("\n Equivalent binary of %i is: ",n); // imprimi o equivalente binario do numero decimal digitado no inicio
printf("\n\n");

for(j = i-1; j >= 0; j--) // Este laço é responsavel por mudar a ordem dos binarios... Ler eles de trás para frente.
{
printf("%d",binary[j]); // imprimi o equivalente binario
}

break;

/* This section below is intended to convert Binary to Decimal */
case 2:

printf("Type the Binary Number Here: ");
scanf("%i",&decimal);

for(i =0; rest = 0; )



break;
}
}



  


2. Re: Dificuldade em conversão binario para decimal

Paulo
paulo1205

(usa Ubuntu)

Enviado em 18/02/2018 - 22:05h

Essa é uma questão muito comum.

Em 2013 houve um tópico aqui no Fórum de C / C++ do VoL sobre esse assunto (https://www.vivaolinux.com.br/topico/C-C++/Comando-itoa/), que acabou virando artigo no meu blog (http://unixntools.blogspot.com.br/2013/10/tunel-do-tempo-funcao-itoa.html) e depois um artigo no próprio VoL (https://www.vivaolinux.com.br/artigo/Tunel-do-Tempo-a-funcao-itoa, que infelizmente acabou ficando com uns problemas de formatação e transcrição por conta da forma de publicação usada pelo pessoal do VoL, mas que, ainda assim, acho que dá para ser entendido). Recomendo que você dê uma olhada e procure entender.

Note que é preciso ter cuidado para não confundir “número” com “numeral” (um dos pontos que eu abordo nos textos acima). Em particular, muita gente que lida com esse problema acaba assumindo que a representação do dado através do tipo int do C é sua representação decimal, o que quase sempre é falso (a esmagadora maioria dos computadores usa representação numérica nativa binária!). Muitas pessoas não se dão conta de que printf() e scanf(), por meio das conversões "%d" e "%i", são que se encarregam de converter da representação numérica nativa para para texto (numeral) em base decimal, e vice-versa.

Um programa que realmente convertesse de numerais binários para numerais decimais ou vice-versa provavelmente teria de ter como entrada e saída representações em strings, e o valor numérico (de número, não numeral) poderia no máximo ser usado apenas como intermediário entre o numeral de entrada e o numeral de saída.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts