fork(9) download
  1. # include <stdio.h>
  2.  
  3. void decimalParaBinario(int decimal) {
  4. char aux[1000000];
  5. int i, indice = 0;
  6.  
  7. // simples conversão de decimal para binário:
  8. // divida o decimal por 2 enquanto ele for maior que 0,
  9. // sempre acumulando o resto das divisões, que compõem o número binário final.
  10. while (decimal > 0) {
  11. int resto = decimal % 2;
  12. aux[indice++] = resto + '0';
  13.  
  14. decimal /= 2;
  15. }
  16.  
  17. // o número binário em aux[] está invertido: 12d --> 0011b.
  18. // abaixo ele será consertado: 12d --> 0011b --> 1100b.
  19. for (i = 0; indice > 0; indice--, i++) {
  20. printf("%c", aux[indice - 1]);
  21. }
  22. }
  23.  
  24. void fracaoParaBinario(double fracao) {
  25. fracao = fracao - (int)fracao; // removendo a parte inteira: 12.25d --> 0.25d
  26.  
  27. while (fracao != 0.0) {
  28. fracao *= 2;
  29. int resto = (int)fracao;
  30. fracao -= resto;
  31.  
  32. printf("%d", resto);
  33. }
  34. }
  35.  
  36. void decimalComFracaoParaBinario(double numero) {
  37. decimalParaBinario((int)numero);
  38. printf(".");
  39. fracaoParaBinario(numero);
  40. printf("\n");
  41. }
  42.  
  43. int main() {
  44. double numero;
  45.  
  46. numero = 12.25;
  47. decimalComFracaoParaBinario(numero);
  48.  
  49. numero = 62.62510;
  50. decimalComFracaoParaBinario(numero);
  51.  
  52. return 0;
  53. }
Success #stdin #stdout 0s 3016KB
stdin
Standard input is empty
stdout
1100.01
111110.101000000000011010001101101110001011101011001