Você precisa converter um número decimal para binário em C e agora?
Por meio desse programa você vai poder entender como e porque é simples realizar essa tarefa de uma forma elegante e rápida.
A forma aqui apresentada tem um olhar diferente se comparada a forma manual de conversão em que realizamos sucessivas divisões do número por 2 e agrupamos os restos para gerar o resultado.
Tomamos como base um inteiro de 32 bits para realizar nossa conversão. O que faremos é verificar bit a bit em cada uma das 32 posições o seu valor e o imprimir na tela (1 ou 0), até formar o número desejado.
Esse algoritmo segue os seguintes passos para alcançar nosso objetivo:
- Lê o número
- Para cada bit, realiza uma operação de deslocamento até à última casa da esquerda para direita
- Realiza uma operação lógica & com o número 1, tendo como resultado 0 ou 1, que será impresso na tela até formar o nosso número desejado.
//================================================================
// Descrição: Lê um número decimal e imprime a sua forma binária
//================================================================
// Libs
#include <stdio.h>
#include <stdlib.h>
// Função Main
int main() {
int n; // Número de entrada
int r; // Resultado do deslocamento
int i; // Contador
// Lê o número
printf("Digite o numero: ");
scanf("%d", &n);
// Utiliza um número de 32 bits como base para a conversão.
for(i = 31; i >= 0; i--) {
// Executa a operação shift right até a
// última posição da direita para cada bit.
r = n >> i;
// Por meio do "e" lógico ele compara se o valor
// na posição mais à direita é 1 ou 0
// e imprime na tela até reproduzir o número binário.
if(r & 1) {
printf("1");
} else {
printf("0");
}
}
printf("\n");
system("pause");
}
Continua com dúvidas? Tem uma sugestão diferente da abordada? Deixe um comentário, vamos discutir e construir conhecimento.
