Ynt: Floating point sayilar uzerine

Başlatan z, 12 Ağustos 2013, 13:56:04

z

Mantisimiz 52 bit olsun.

m mantisi, e de exponenti gostersin.

Pozitif bir A sayisinin 52 bitlik floating point esdegeri; (exponent icin bias vermeyelim)

A=(2^e)*(1+(m*2^-52))

Bu durumda  A=10^15 sayisi icin e ve m i nasil buluruz?


mesaj birleştirme:: 12 Ağustos 2013, 14:31:22

Kafa yordum ama emin değilim. Bu soruyu cozebilmek icin logaritma almak sart gorunuyor.


10^15=(2^e)(1+m2^-52)

10^15=2^(15/log2)

10^15>=2^e

Buradan alt sinir e=Tam kisim(15/log2)

e artik bilindigine gore;


2^(15/log2)=(2^e)(1+m2^-52)


2^((15/log2)-e)=(1+m2^-52)


2^((15/log2)-e+52)=(2^-52+m)


m=2^((15/log2)-e+52) -2^52

Bu durumda e=101

m=3496400352000000 (Hesap makinemin sinirlamalarindan dolayi gercek degeri bu değildir)
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Icarus

Sanırım floating point çevrim denkleminiz hatalı.
o yüzden böyle değerler çıkıyor
value = 2^e * (1 + 1/m)

http://www.h-schmidt.net/FloatConverter/

hesap makinesinde şöyle yapabiliriz.
e = floor[log2(value)]
1/m = value / (2^e)