Código em C para converter um inteiro positivo em uma representação em string binária.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
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);
} |
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
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.