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.