Picproje Elektronik Sitesi

SERBEST BÖLGE => Programlama ve Algoritma => Konuyu başlatan: Erol YILMAZ - 24 Temmuz 2008, 12:31:35

Başlık: Float sayıların İçeriği Hakkında...
Gönderen: Erol YILMAZ - 24 Temmuz 2008, 12:31:35
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 (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.

(http://img253.imageshack.us/img253/8607/floatrakg2.png)
Başlık: Float sayıların İçeriği Hakkında...
Gönderen: fatihvelid - 24 Temmuz 2008, 13:44:10
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
Başlık: Float sayıların İçeriği Hakkında...
Gönderen: fatihvelid - 24 Temmuz 2008, 13:49:27
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.
Başlık: Float sayıların İçeriği Hakkında...
Gönderen: mihri - 24 Temmuz 2008, 13:52:27

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. ;)
Başlık: Float sayıların İçeriği Hakkında...
Gönderen: CoşkuN - 25 Temmuz 2008, 00:30:12
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
Başlık: Float sayıların İçeriği Hakkında...
Gönderen: muuzoo - 26 Temmuz 2008, 14:16:36
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.
(http://upload.wikimedia.org/math/0/8/4/084543c900069634d9dd89cb31f528ce.png)

Yarıca şu sayfanın da faydası olacağı kanaatindeyim.
http://en.wikipedia.org/wiki/IEEE_754-1985