[C] Decimal -> Binario

Publicado por Enzo de Brito Ferber 05/04/2006

[ Hits: 7.521 ]

Homepage: http://www.maximasonorizacao.com.br

Download binario.c




Programa que converte numeros decimais em binario usando operadores bit-bit padrões do C.
Muito bom para se entender operadores bit-bit e conversao de numeros...

  



Esconder código-fonte

/*
 * Programa: Binário
 * Arquivo: binario.c
 * Autor: Enzo Ferber 'Slackware_10'
 */
 
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define FLUSH __fpurge(stdin); //fflush(stdin) em sistemas windows

int converter(int num){
    printf("%d", (num & 0x80) / 0x80); //bit 7
    printf("%d", (num & 0x40) / 0x40); //bit 6
    printf("%d", (num & 0x20) / 0x20); //bit 5
    printf("%d", (num & 0x10) / 0x10); //bit 4
    printf("%d", (num & 0x08) / 0x08); //bit 3
    printf("%d", (num & 0x04) / 0x04); //bit 2
    printf("%d", (num & 0x02) / 0x02); //bit 1
    printf("%d", (num & 0x01) / 0x01); //bit 0
    /* Quando ha uma coversao decimal->binario, o bit 7 vem em 
     * primeiro lugar, e o 0 em ultimo.
     * Exemplo: Converter 65 (A) em binario
     * 65 | 2 (resto 1) bit 0
     * 32 | 2 (resto 0) bit 1
     * 16 | 2 (resto 0) bit 2
     * ...
     * Depois se inverte os bits:
     * B = bit
     * B7 B6 B5 B4 B3 B2 B1 B0 
     */
}

int main(void){
    int num;
    while(1){
        system("clear"); //cls em sistemas windows
        printf("Numero a converter: ");
        FLUSH
        scanf("%d", &num);
        if(num == -1) break; //garante um loop nao infinito
        converter(num);
        FLUSH
        getchar();
    }
    return 0;
}

Scripts recomendados

Um joguinho em C

Rotinas para manipulação de matrizes

Exceções em C através de try-throw-catch

Gerador de numeros da mega-sena tabajara

SIMULADOR DE DADOS DE RPG VAMPIRO A MÁSCARA - Corrigido


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts