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)
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
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.
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. ;)
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
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