entanglement:
douglaskd:
tem como mostrar um pouco de código sobre como implementar Double por exemplo ?
Pra começar, você normalmente precisa saber:
a) Se seu processador já tem instruções de ponto-flutuante (mesmo processadores ARM nem sempre implementam isso :( )
b) Supondo que não tenha, se o problema pode ser resolvido sem double, apenas com "fixed-point arithmetic" (por exemplo, se você quer criar um dispositivo que seja uma calculadora com exatamente 2 casas depois da vírgula, que faça apenas somas e subtrações).
c) Supondo que não dê para resolver com fixed-point arithmetic, se você pode usar um formato de ponto-flutuante não-padrão e mais fácil de implementar, ou tem de implementar IEEE-754 ou um subconjunto dele
http://en.wikipedia.org/wiki/IEEE_floating_point
Veja só o que você precisa se perguntar antes de sair usando uma implementação pronta ou de sair fazendo :(
Isso mesmo. O grande problema é que na indústria os dispositivos precisam trabalhar com fontes externas dos mais variados tipos. Se o dispositivo lê um inteiro de 32 bits e você usa um micro que trabalha com inteiros de 16 já tem um problema.
Isso pode ser um protocolo de comunicação ou qualquer coisa do gênero e na engenharia(o papel dela claro) é fazer o custo da solução cair. Então é natural você usar um chip que só soma e subtrai e ter que implementar uma fft nele(é uma metáfora, na maioria das vezes).
O problema acima você consegue resolver quebrando os bits da fonte em um vetor de inteiros de 16 de duas posições:
e usar uma máscara de bits para preenchê-lo
int leitura = 0;
read_source(pino1, leitura);
...
while(i<16){
...
if(leitura && 0000000000000001){
int32[0]|=1;
}else{
int32[0]|=0;
}
int32[0] << 1;
...
}
e ir processando os bits que vão chegando e montando toda a informação. O pior é quando falta a ram e você precisa reaproveitar todas as variáveis por não pode declará-las a vontade. Aí a coisa complica bem.
É isso a grosso modo. Você precisa pensar em algoritmos constantemente para lidar com números, fazer sobrar memória, etc...