Um valor binário pode ser representado no padrão conhecido como BCD 8421 ( Binary-coded Decimal – Decimal Codificado em Binário). Nesta codificação, os valores 8421 representam o resultado de 2 i , onde i denota a posição do dígito dentro da palavra. Por exemplo, 1001 (2) = 1*8 + 0*4 + 0*2 +1*1 = 9 (10) . Para essa questão, suponha o seguinte código recursivo:
#include <stdio.h>
#include <string.h>
int Bin2Dec(char bin[],int pos,int exp)
{
if(____) return 0;
return (bin[pos]-48)*exp + Bin2Dec(bin,____,____);
}
int main()
{
char binario[9]="10011101"; //valor em decimal = 157
printf("Valor convertido: %d", Bin2Dec(binario,strlen(binario)-1,1));
return 0;
}
Assinale a opção abaixo que contenha os trechos de código para preencher as lacunas:
. pos<0 ; pos-1 ; exp/2 .. !pos ; pos+1 ; exp*2 .. pos<0 ; pos-1 ; exp*2 .. !pos ; pos-1 ; exp*2 .. pos<0 ; pos+1 ; exp*2 .
RESPOSTA: . pos <0 ; pos-1 ; exp*2 .
explicação: Parabéns! Sua resposta foi a correta! Realmente o código foi implementado para que a última posição fosse evocada antes para facilitar o cálculo do expoente – à medida que se aproxima da posição 0 (início do vetor – posição mais significativa do número binário), o expoente vai sendo multiplicado por 2. Sendo assim, a posição foi descrementada a cada evocação da função recursiva. A posição 0 do vetor também deveria ser manipulada – essa a razão do ( pos<0).
Para escrever sua resposta aqui, entre ou crie uma conta.
Compartilhar