Código em C para converter um inteiro positivo em uma representação em string binária.
#include
#include
#include
char * decpbin(unsigned int n){
int i, r, c;
char * bin;
bin = calloc(16,sizeof(char));
memcpy(bin, "0000000000000000", 16);
i = n;
c = 0;
while(i>0){
r = i % 2;
i = i/2;
bin[15-c] = '0'+r;
c++;
}
return bin;
}
int main(){
char * dec;
dec = decpbin(1985);
printf("%s\n", dec);
free(dec);
}
Compilando e Testando:
$ gcc decbin.c -o decbin
$ ./decbin
0000011111000001
No caso, ele foi feito para inteiros não sinalizados. Como um inteiro ocupa 16 bits, e não estamos gastando um bit para o sinal, o maior número que pode ser convertido é 65535. Por isso criamos a string bin com 16 casas de tamanho.
Basicamente é o algoritmo que se usa para transformar um inteiro em binário. Você pega o número, pega o resto da divisão por 2, que vai ser 0 ou 1 e usa isso para representar o bit menos significativo, ou seja, o mais a direita. Depois pega o número e divide por dois e pega novamente o resto. Fica fazendo isso até que o número dividido por 2 seja 0.
Ou pega algum(ns) metodozinho(s) em java que já faça tudo isso : P
Dá para fazer isso aà com bem menos código com Java ou Python, eu até já fiz isso uma vez mas o código tá aà perdido pelo mundo. De toda forma a idéia era exercitar e fazer exatamente o algoritmo para converter para binário.
isso tudo é uma grande besteira!!!!!!!!!!!!!!!!!