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); } |
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!!!!!!!!!!!!!!!!!