Título: Imprimindo em Binário
Linguagem: C/C++
S.O.: DOS / Windows
Autor(es): Wenderson Teixeira


Imprimindo em Binário

Conv2Bin.c
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>

#if (__BORLANDC__ <= 0x460) || !defined(__cplusplus)
  typedef enum { false, true } bool;
#endif

/* IntToBinStr *************************************************************/
/* Descricao:                                                              */
/*     Funcao que converte um número p/ uma string no formato binario      */
/*                                                                         */
/* Entrada:                                                                */
/*     char *str - String que ira receber o numero convertido              */
/*     int Num   - Numero a ser convertido                                 */
/*                                                                         */
/* Retorno:                                                                */
/*     Retorna str                                                         */
/***************************************************************************/
char *IntToBinStr(char *str, int Num)
{
  unsigned int n = (unsigned int)Num;
  int c;
  bool bAppend = false;

  if(!Num)
  {
    strcpy(str, "0");
    return str;
  }

  str[0] = '\0';
  for(c = 0; c < (sizeof(int) * 8); c++)
  {
    strcat(str, (n & 0x8000) ? (bAppend = true, "1") : (bAppend ? "0" : ""));
    n <<= 1;
  }
  
  return str;
}

/* BinStrToInt *************************************************************/
/* Descricao:                                                              */
/*     Funcao que converte uma string no formato binario p/ um número      */
/*                                                                         */
/* Entrada:                                                                */
/*     char *str - String que sera convertida                              */
/*                                                                         */
/* Retorno:                                                                */
/*     Retorna o número convertido                                         */
/***************************************************************************/
int BinStrToInt(char *str)
{
  int c, n;
  
  for(c = n = 0; c < strlen(str); c++)
  {
    n <<= 1;
    n |= str[c] == '1' ? 1 : 0;
  }
  
  return n;
}

void main()
{
  char strBin[sizeof(int) * 8 + 1];
  int c;

  printf("--------------------------\n"
         "| Hex | Oct |  Bin | Dec |\n"
         "--------------------------\n");
  for(c = 0; c < 16; c++)
  {
    printf("|  %02X ", c);
    printf("|  %2o ", c);
    printf("| %4s ", IntToBinStr(strBin, c));
    printf("|  %2d |\n", BinStrToInt(strBin));
  }
  printf("--------------------------\n");
}




1