# include <stdio.h>
void decimalParaBinario(int decimal) {
char aux[1000000];
int i, indice = 0;
// simples conversão de decimal para binário:
// divida o decimal por 2 enquanto ele for maior que 0,
// sempre acumulando o resto das divisões, que compõem o número binário final.
while (decimal > 0) {
int resto = decimal % 2;
aux[indice++] = resto + '0';
decimal /= 2;
}
// o número binário em aux[] está invertido: 12d --> 0011b.
// abaixo ele será consertado: 12d --> 0011b --> 1100b.
for (i = 0; indice > 0; indice--, i++) {
printf("%c", aux
[indice
- 1]); }
}
void fracaoParaBinario(double fracao) {
fracao = fracao - (int)fracao; // removendo a parte inteira: 12.25d --> 0.25d
while (fracao != 0.0) {
fracao *= 2;
int resto = (int)fracao;
fracao -= resto;
}
}
void decimalComFracaoParaBinario(double numero) {
decimalParaBinario((int)numero);
fracaoParaBinario(numero);
}
int main() {
double numero;
numero = 12.25;
decimalComFracaoParaBinario(numero);
numero = 62.62510;
decimalComFracaoParaBinario(numero);
return 0;
}
IyBpbmNsdWRlIDxzdGRpby5oPgoKdm9pZCBkZWNpbWFsUGFyYUJpbmFyaW8oaW50IGRlY2ltYWwpIHsKCWNoYXIgYXV4WzEwMDAwMDBdOwoJaW50IGksIGluZGljZSA9IDA7CgoJLy8gc2ltcGxlcyBjb252ZXJzw6NvIGRlIGRlY2ltYWwgcGFyYSBiaW7DoXJpbzoKCS8vIGRpdmlkYSBvIGRlY2ltYWwgcG9yIDIgZW5xdWFudG8gZWxlIGZvciBtYWlvciBxdWUgMCwKCS8vIHNlbXByZSBhY3VtdWxhbmRvIG8gcmVzdG8gZGFzIGRpdmlzw7VlcywgcXVlIGNvbXDDtWVtIG8gbsO6bWVybyBiaW7DoXJpbyBmaW5hbC4KCXdoaWxlIChkZWNpbWFsID4gMCkgewoJCWludCByZXN0byA9IGRlY2ltYWwgJSAyOwoJCWF1eFtpbmRpY2UrK10gPSByZXN0byArICcwJzsKCgkJZGVjaW1hbCAvPSAyOwoJfQoKCS8vIG8gbsO6bWVybyBiaW7DoXJpbyBlbSBhdXhbXSBlc3TDoSBpbnZlcnRpZG86IDEyZCAtLT4JIDAwMTFiLgoJLy8gYWJhaXhvIGVsZSBzZXLDoSBjb25zZXJ0YWRvOiAxMmQgLS0+IDAwMTFiIC0tPiAxMTAwYi4KCWZvciAoaSA9IDA7IGluZGljZSA+IDA7IGluZGljZS0tLCBpKyspIHsKCQlwcmludGYoIiVjIiwgYXV4W2luZGljZSAtIDFdKTsKCX0KfQoKdm9pZCBmcmFjYW9QYXJhQmluYXJpbyhkb3VibGUgZnJhY2FvKSB7CglmcmFjYW8gPSBmcmFjYW8gLSAoaW50KWZyYWNhbzsgLy8gcmVtb3ZlbmRvIGEgcGFydGUgaW50ZWlyYTogMTIuMjVkIC0tPiAwLjI1ZAoKCXdoaWxlIChmcmFjYW8gIT0gMC4wKSB7CgkJZnJhY2FvICo9IDI7CgkJaW50IHJlc3RvID0gKGludClmcmFjYW87CgkJZnJhY2FvIC09IHJlc3RvOwoKCQlwcmludGYoIiVkIiwgcmVzdG8pOwoJfQp9Cgp2b2lkIGRlY2ltYWxDb21GcmFjYW9QYXJhQmluYXJpbyhkb3VibGUgbnVtZXJvKSB7CglkZWNpbWFsUGFyYUJpbmFyaW8oKGludCludW1lcm8pOwoJcHJpbnRmKCIuIik7CglmcmFjYW9QYXJhQmluYXJpbyhudW1lcm8pOwoJcHJpbnRmKCJcbiIpOwp9CgppbnQgbWFpbigpIHsKCWRvdWJsZSBudW1lcm87CgoJbnVtZXJvID0gMTIuMjU7CglkZWNpbWFsQ29tRnJhY2FvUGFyYUJpbmFyaW8obnVtZXJvKTsKCgludW1lcm8gPSA2Mi42MjUxMDsKCWRlY2ltYWxDb21GcmFjYW9QYXJhQmluYXJpbyhudW1lcm8pOwoKCXJldHVybiAwOwp9