Imprimindo o equivalente decimal de um número binário. Leia um inteiro contendo apenas 0s e 1s (ou seja, um inteiro ‘binário’) e imprima seu equivalente decimal. [Dica: use os operadores de módulo e divisão para apanhar os dígitos do número ‘binário’ um de cada vez, da direita para a esquerda. Assim como no sistema numérico decimal, em que o dígito mais à direita tem um valor posicional de 1, e o próximo dígito à esquerda tem um valor posicional de 10, depois de 100, depois de 1.000, e assim por diante, no sistema binário, o dígito Imprimindo o equivalente decimal de um número binário mais à direita tem um valor posicional de 1, o próximo dígito à esquerda tem um valor posicional de 2, depois de 4, depois de 8 e assim por diante. Assim, o número 234 pode ser interpretado como 4 * 1 + 3 * 10 + 2 * 100. O equivalente decimal do binário 1101 é 1 * 1 + 0 * 2 + 1 * 4 + 1 * 8 ou 1 + 0 + 4 + 8 ou 13.]
Passo 1
Olá, tudo bem? Ficou com dúvida nesse exercício? Vem que eu te ajudo!
O exercício pede para que você crie um programa que leia um número inteiro binário e imprima seu equivalente decimal.
Passo 2
Primeiramente, vamos declarar as variáveis, que será: num, vet_bin[MAX], i e j. Depois é necessário usar a função “printf” e “scanf” para solicitar o inteiro binário do usuário.
Passo 3
Agora, vamos usar o while para aplicar a fórmula dada pelo enunciado, dessa forma fica:
while(num > 0)
{
vet_bin[i] = num % 2;
i++;
num = num / 2;
}
Depois, nós usamos o “printf” para imprimir os resultados obtidos.
Resposta
Dessa forma, para obter o resultado esperado, o seu programa deve está da seguinte forma:
#include
#define MAX 50
int main()
{
int num;
int vet_bin[MAX];
int i = 0, j;
int aux_num = num;
printf("Insira um inteiro binário:\n");
scanf("%d", &num);
while(num > 0)
{
vet_bin[i] = num % 2;
i++;
num = num / 2;
}
printf("%d em binario: ", aux_num);
for(j = i - 1; j >= 0; j--)
printf("%d", vet_bin[j]);
printf("\n");
return 0;
}
Espero ter ajudado!