Float sayıların İçeriği Hakkında...

Başlatan Erol YILMAZ, 24 Temmuz 2008, 12:31:35

Erol YILMAZ

Arkadaşlar bi çoğumuz Float sayılarla işlem yapıyoruz.

Peki float sayılar nasıl ifade ediliyor ?

Bunu açıklamaya yönelik bir site buldum.

http://babbage.cs.qc.edu/IEEE-754/Decimal.html

1.2207763 x 2^12 = 5000.3 oluyor

Son kısmı yani 1.2207763  rakamını nasıl tespit ettiğini anlayamadım.

Bu konuda yardımcı olabilecek arkadaşların yardımlarını rica ediyorum.


fatihvelid

Float sayıların ifade edilişi hakkında bildiğim iki farklı standart var. C18 bu iki standardı da destekliyor.

Aşağıdaki IEEE 754-1985 standardını anlatıyor.

http://en.wikipedia.org/wiki/IEEE_754
Kainatta her canlı "DNA" diliyle yazılmış bir programdır...

fatihvelid

Derleyiciler, Float sayılarla yapılan işlemler için çok kod üretiyor. Ama bunu için bazı işlemcilerde, Floating Point Vector özelliği bulunuyor.
Kainatta her canlı "DNA" diliyle yazılmış bir programdır...

mihri

Convert -1313.3125 to IEEE 32-bit floating point format.

   1. The integral part is 1313[10] = 10100100001[2]. The fractional:
      0.3125 	× 2 = 	0.625 	0 	Generate 0 and continue.
      0.625 	 × 2 = 	1.25 	1 	Generate 1 and continue with the rest.
      0.25 	  Ã— 2 = 	0.5 	0 	Generate 0 and continue.
      0.5 	   × 2 = 	1.0 	1 	Generate 1 and nothing remains.

      So 1313.3125[10] = 10100100001.0101[2].

   2. Normalize: 10100100001.0101 = 1.01001000010101 × 2^10.

   3. Mantissa is 01001000010101000000000, exponent is 10 + 127 = 137 = 100010012, sign bit is 1. 

So -1313.3125 is 11000100101001000010101000000000 = c4a42a0016



Sanırım 2. işlem senin sorunun cevabı oluyor.

Kolay gelsin. ;)
"Eppur si muove!"

CoşkuN

Bu floating sayılar dikkatli kullanılmadığında gerçekten başa bela açabilir.Bunu en güzel örneği Irak savaşında Amerikanın Patriot füzelerinde bulunan bir hata.Füzenin güdüm algoritmasında kullanılan bir zaman değeri floating point bir değişkende tutulduğundan zamanla kümülatif bir hata oluşuyor.Füze sistemi 8 saat açık tutulduğunda bu 500 metrelik bir sapmaya neden oluyor.Füze  karşıdan gelen Scudd füzesini ıskalıyor ve 28 Amerikan askeri ölüyor

http://en.wikipedia.org/wiki/MIM-104_Patriot

muuzoo

FPGA üzerinde float sayı aritmetiği ile uğraşırken neredeyse kafayı yiyordum.Sanırım şu gösterim daha rahat anlamanıza yardımcı olabilir.


Yarıca şu sayfanın da faydası olacağı kanaatindeyim.
http://en.wikipedia.org/wiki/IEEE_754-1985
gunluk.muuzoo.gen.tr - Kişisel karalamalarım...