IEEE Floating Point Standard
S(1 bit) E(8 bit) F(23 bit) single precision
S(1 bit) E(11 bit) F(52 bit) double precision
3.5 + 72.0625 Floating point sayıların Toplamını Bulunuz?
3.5 i 3 ve .5 i ayırıyoruz.
3--> 101 dir
.5-->
.5*2=1.0-->1 dir
Sayımız-->101.1 olur.Şimdi . yı mümkün olan en sola yanı soldaki 1 den öncesine yerleştiriyoruz.
1.011x2^2 bundaki en soldaki 1 i (1) şekilde yazıyoruz aşağıda.
32 bitle çalıştığımız için Exponenti bulmak için 2^y yanı 127+y=E olur.
Y miz burada 2 olduğundan 127+2=129
129-->100000001 dir
S de sayımız pozitif olduğundan 1 dir.
3.5--> 1 100000001 (1)011 0000 0000 0000 0000 0000
Buna a diyelim a= 1 100000001 (1)011 0000 0000 0000 0000 0000
Şimdi 72.0625 i bu şekilde bulalaım.
72-->1001000 dir
.0625-->
.0625*2=0.125-->0 bu sıfır . nın solundakidir.Yanı 2 ile çarpıp noktanın solundakini ?okun sağına yazıyoruz ki onları kullanacaz.
0.125*2=0.25-->0
0.25*2=0.5-->0
0.5*2=1.0-->1 işlem . dan sonra sayı bitene kadar yada tekrarlanan kadar devam eder bu şekilde.Şu an 1.0 olduğundan sonlandı işlemimiz.
.0625-->0001 dir
72-->1001000
Sayımız : 72.0625 birleştirecek olursak
1001000.0001
1.0010000001x2^6 olur.
32 bit oludğundan 127 sabittir.
Yukarda y ile topladığımız gibi exponenti bulmak içinde
127+6=133
133-->10000111 exponentimiz.
S E F leri yazalım.
Pozitif olduğundan s=1 dir E=10000111 F=1.001 0000 001 bunu yazıyoruz.23 e tamamalamak içinde bu sayıdan sonra 0 geliyor.
Buna b=1 10000101 (1)001 0000 0010 0000 0000 0000
a+b yi bulalaım yani 3.5+72.0625
a=1 100000001 (1)011 0000 0000 0000 0000 0000
b=1 10000011 (1)001 0000 0010 0000 0000 0000
E ler eşit olmadığından toplayamayız. 10000101 ve 10000011 eşitlemeliyiz.
Exponente eklendiği kadar soldaki yanı F kısmı da sağa kaydırılır.Buna right shift denir
A nın ki 129 du ve b ninkide 133 o zaman a ya 4 eklersek eşitlenir exponentler.
4 ekleyelim anınkine
b=1 10000011 (1)001 0000 0010 0000 0000 0000
a=1 10000011 (1)011 0000 0000 0000 0000 0000
Dikkat exponente 4 kelndiği için F kısmı yanı (1)001 0000 0010 0000 0000 0000 4 kaydırılmalı.Kaydıracak olursak
a=1 100000011 (0)000 0101 1000 0000 0000 0000 4 tane kaydırdık.Önce () içinde 1 vardı şimdi 0 geldi.() den başlayıp kaydırıyoruz.
a=1 10000011 (0)000 0101 1000 0000 0000 0000
b=1 10000011 (1)001 0000 0010 0000 0000 0000
+________________________________________
1 100000011 (1)001 0101 1010 0000 0000 0000
3.5 = 01000000011000000000000000000000b
YanıtlaSil75.0625 = 01000010100100000010000000000000b
Zaten sayı eğer pozitifse MSB'nin 0 olması gerekir 1 değil