Tabela de equivalência decimal, binária, octal e hexadecimal. Escreva um programa que imprima uma tabela dos equivalentes binário, octal e hexadecimal dos números decimais no intervalo de 1 a 256. Se você não estiver acostumado com esses sistemas numéricos, leia o Apêndice C antes de tentar realizar esse exercício.
Passo 1
Fala Galera!!! Tudo certo? Espero que sim!!! Bora para mais um exercício.
Vamos escrever um programa que seja capaz de ler um número na forma decimal de 1 até 256 e exibir ele na forma binária, octal e hexadecimal. Nosso programa irá exibir a resposta em uma tabela onde as colunas serão os tipos de representações dos números.
Passo 2
Escrevendo a nosso programa:
#include
int main( void )
{
int loop;
/* contador de loops */
int number;
/* número atual */
int temp1; /* inteiro temporário */
/* imprime os cabeçalhos das tabelas */
printf( "Decimal\t\tBinary\t\tOctal\t\tHexadecimal\n" );
/* percorre os valores de 1 a 256 */
for ( loop = 1; loop
printf( "%d\t\t", loop );
number = loop;
/* números binários */
printf( "%c", number == 256 ? '1' : '0' );
printf( "%c", number = 128 ? '1' : '0' );
number %= 128;
printf( "%c", number = 64 ? '1' : '0' );
number %= 64;
printf( "%c", number = 32 ? '1' : '0' );
number %= 32;
printf( "%c", number = 16 ? '1' : '0' );
number %= 16;
printf( "%c", number = 8 ? '1' : '0' );
number %= 8;
printf( "%c", number = 4 ? '1' : '0' );
number %= 4;
printf( "%c", number = 2 ? '1' : '0' );
number %= 2;
printf( "%c\t", number == 1 ? '1' : '0' );
/* números octais */
number = loop;
printf( "%d", number = 64 ? number / 64 : 0 );
number %= 64;
printf( "%d", number = 8 ? number / 8 : 0 );
number %= 8;
printf( "%d\t\t", number == 0 ? 0 : number );
/* números hexadecimais */
number = loop;
temp1 = 16;
if ( number = 256 ) {
printf( "%d", number / 256 );
} /* end if */
if ( number = 16 ) {
temp1 = number / 16;
number %= 16;
} /* end if */
else {
printf( "0" );
} /* end else */
/* converte para letra se temp1 estiver acima de 9 */
if ( temp1
printf( "%d", temp1 );
} /* end if */
else if ( temp1 >= 10 && temp1
printf( "%c", 'A' + ( temp1 - 10 ) );
} /* end else if */
/* converte para letra se o número for maior que 9 */
if ( number
printf( "%d", number );
} /* end if */
else if ( number >= 10 && number
printf( "%c", 'A' + ( number - 10 ) );
} /* end else if */
printf( "\n" );
} /* end for */
return 0; /* indicate successful termination */
} /* end main */
Passo 3
A saída do programa será:
E assim finalizamos mais exercício galera!!! Até o próximo.
Resposta
#include
int main( void )
{
int loop;
/* contador de loops */
int number;
/* número atual */
int temp1; /* inteiro temporário */
/* imprime os cabeçalhos das tabelas */
printf( "Decimal\t\tBinary\t\tOctal\t\tHexadecimal\n" );
/* percorre os valores de 1 a 256 */
for ( loop = 1; loop
printf( "%d\t\t", loop );
number = loop;
/* números binários */
printf( "%c", number == 256 ? '1' : '0' );
printf( "%c", number = 128 ? '1' : '0' );
number %= 128;
printf( "%c", number = 64 ? '1' : '0' );
number %= 64;
printf( "%c", number = 32 ? '1' : '0' );
number %= 32;
printf( "%c", number = 16 ? '1' : '0' );
number %= 16;
printf( "%c", number = 8 ? '1' : '0' );
number %= 8;
printf( "%c", number = 4 ? '1' : '0' );
number %= 4;
printf( "%c", number = 2 ? '1' : '0' );
number %= 2;
printf( "%c\t", number == 1 ? '1' : '0' );
/* números octais */
number = loop;
printf( "%d", number = 64 ? number / 64 : 0 );
number %= 64;
printf( "%d", number = 8 ? number / 8 : 0 );
number %= 8;
printf( "%d\t\t", number == 0 ? 0 : number );
/* números hexadecimais */
number = loop;
temp1 = 16;
if ( number = 256 ) {
printf( "%d", number / 256 );
} /* end if */
if ( number = 16 ) {
temp1 = number / 16;
number %= 16;
} /* end if */
else {
printf( "0" );
} /* end else */
/* converte para letra se temp1 estiver acima de 9 */
if ( temp1
printf( "%d", temp1 );
} /* end if */
else if ( temp1 >= 10 && temp1
printf( "%c", 'A' + ( temp1 - 10 ) );
} /* end else if */
/* converte para letra se o número for maior que 9 */
if ( number
printf( "%d", number );
} /* end if */
else if ( number >= 10 && number
printf( "%c", 'A' + ( number - 10 ) );
} /* end else if */
printf( "\n" );
} /* end for */
return 0; /* indicate successful termination */
} /* end main */