Arquivo da tag: Deslocamento

decimal

Conversão Decimal para Binário – C

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:

  1. Lê o número
  2. Para cada bit, realiza uma operação de deslocamento até à última casa da esquerda para direita
  3. 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.