4 byte integerdan float satı üretme

Başlatan enexs, 21 Eylül 2010, 14:30:36

enexs

bir float sayı normlade 4 byte lık bir integer sayı ile ifade edilir yani siz mesela
float deg=25,21;
gibi bir tanımlama yaptığınızda bu denetleyicinin raminde 4 byte lık yer ayrılır ve bu ramde

0x0010=200
0x0011=25
0x0012=39
0x0013=70

şeklinde yer tutar benim sormak istediğim ramde bu integer sayıları kullanark nasıl float 25.21 sayısına ulaşabilir bir de bunu fonksiyon kullanmadam yapmam gerekiyor
ekşiya nedir? -yolkesen haraç alan dağlarda yaşayan senin benim gib bir insandır işte sen ekşiya bilirmisin? -he birini biliyim adı barandı.

JKramer

https://www.picproje.org/index.php/topic,21429.0.html

Bir de neden fonksiyon kullanmadan yapmak istiyorsunuz? İllaki bir hesaplama yapmanız gerekecek.

enexs

fonksiyondan kastım derleyiciye özgü hazır fonksiyonlardı. programı arm tabanlı bir denetleyici için keil de yazıyorum bunun genel bilgi almak istedim ama çok fazla matematiksel işlem gerekecek anlaşılan
ekşiya nedir? -yolkesen haraç alan dağlarda yaşayan senin benim gib bir insandır işte sen ekşiya bilirmisin? -he birini biliyim adı barandı.

JKramer


enexs

bende şöyle bir fonksiyon buldum ama bunu keil derlerken "pint=&temp" satırında hata veriyor float inte atanamaz diyede bir mesaj veriyor halbuki bunu pic için olan ccs c de derliyor

float byte_to_float(int i ){
float temp;
uint8_t *pint;
int8_t s;
pint = &temp;
pint[0] = paket; s=bit_test(pint[0],7); pint[0]=(pint[0]<<1);
pint[1] = paket[i+1];if(bit_test(pint[1],7)==1){bit_set(pint[0],0);}
          if(s==1){bit_set(pint[1],7);}else bit_clear(pint[1],7);
pint[2] = paket[i+2];
pint[3] = paket[i+3];
return temp;
}
ekşiya nedir? -yolkesen haraç alan dağlarda yaşayan senin benim gib bir insandır işte sen ekşiya bilirmisin? -he birini biliyim adı barandı.