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 */