Saturday 15 December 2012

Arithmetic - Floating Point

Formula bagi floating point precision adalah seperti berikut:



Floating point number representation in MIPS is as shown below : 





s     = sign of floating point ( 1= negative, 0 = positive)
fraction       = the numbers after the decimal after normalized number.
exponent     = actual exponent + bias
Eg :   134.590 = 1.34590 x  102 , 2 is the actual exponent.
bias             => for single precision = 127
                    = > for double precision = 1023

Example for floating point example :
Represent –0.75



1.     Disebabkan angka ini adalah angka negatif, jadi s = 1
2.     0.75   x 2 =1.5      => 1
0.50   x 2 =1.0      => 1
-0.75= -1.1 x 2-1
 Fractionnya ialah 1000…00
3.     Bagi single precision, exponent= actual exponent + 127
     = -1+127 = 126
          Bagi double precision, exponent = -1 + 1023 = 1022
4.     Jadi , representation floating point bagi :

Example 2 : Converting binary to decimal floating point
Find the decimal number represented by this single precision float.


Floating Point Addition
Tambahan floating point adalah amat serupa dengan tambahan nombor biasa, dengan hanya menambah beberapa langkah sahaja.

Langkah pertama adalah menjadikan number floating point untuk memiliki exponent yang sama. Keutamaan exponent adalah mengikut exponent yang lebih besar antara kedua-dua nombor terlibat.

Langkah kedua adalah menambah kedua-dua nombor itu.

Ketiga, jika jumlah tambahan bukan dalam normalized scientific notation, adjustkannya menjadi bentuk normalize.

Langkah keempat ialah adjustkannya kepada bits yang ditetapkan dalam soalan jika ada.

Bagi tambahan binary floating point, satu langkah ditambah selepas langkah ketiga, iaitu menyemak sama ada kewujudan overflow dan underflow berlaku yang mana ia bergantung dengan precision operand. Jika tiada berlakunya overflow dan underflow, melanjut ke langkah keempat. Jika berlaku, pengecualian berlaku. Berikut adalah contoh-contoh tambahan floating point.

Example 1:
9.999tenx 101 + 1.610ten x 10-1 (4 decimal digit of significand)

Langkah 1: exponent  1 dan -1, dengan keutamaannya, 1 akan digunakan sebagai exponent persamaan.

Jadi, 1.610ten x 10-1, titik perpuluhan bergerak ke belakang dan menjadi 0.016tenx101.

Langkah 2 : tambahkan kedua-duanya.
          9.999tenx 10+  0.016tenx101= 10.015ten x 101

Langkah 3 : oleh sebab normalized scientific notation hanya melingkungi 1-9, jawapan perlu adjust.
          10.015ten x 10 = 1.0015ten x 102

Langkah 4 : soalan tetapkan 4 decimal digit, jadi, kena bundarkan jawapan.
          1.0015ten x 10 = 1.002ten x 102

Example 2
Adding 0.510 and -0.437510in binary.

Pertama, tukarkan nombor floating point kepada floating point asas 2.    
          0.510 x 2 = 1.0      , bermaksud 0.510 = 0.12    = 1.0 x 2-1

          -0.437510 x 2 = -0.875   ==> 0
          -0.875 x 2 = -1.75          ==> 1
          -0.75 x 2 = -1.5              ==> 1
          -0.5 x 2 = -1.0                ==> 1
          Therefore, -0.437510 = -0.0111=  -0.111 x 2-1

Langkah kedua, tambahkan kedua-duanya.
          (1 x 2-1 ) + ( - 0.111 x 2-1) = 0.001 x 2-1

Ketiga, normalize jawapan.
          0.0012 x 2-1 = 1.02x 2-4
          -126 <= -4<= 127, tiada overflow atau underflow, melanjut ke langkah empat.

Langkah empat, bundarkan jawapan kepada 4 digit bagi menjadi 1.0002 x 2-4.
          1.0002 x 2-4 = 0.00012 = -0.062510



Floating Point Multiplication
Bagi pendaraban nombor floating point, ia adalah lebih kurang sama dengan pendaraban biasa dan juga langkah bagi tambahan.

Langkah pertama, tambahkan biased exponent kedua-dua nombor dan tolak bias daripada jumlah bagi mendapatkan biased exponent baru.

Langkah kedua, darabkan nombor-nombor berkenaan.

Ketiga, normalize jawapan jika perlu. Kemudian, memeriksa sama ada kewujudan overflow dan underflow berlaku. Jika tiada, melanjut ke langkah keempat. Jika ada, pengecualian berlaku.

Langkah keempat, bundarkan significand kepada bits yang dinyatakan dalam soalan. Jika jawapan sudah ada dalam bentuk normalize, lanjut ke langkah kelima, jika tidak, normalizekannya lagi.

Langkah kelima, tandakan sign positif jika sign operand original adalah same. Jika tidak sama, tandakan negatif.

Example 1: Binary Floating Point Multiplication
Multiply 0.5ten and -0.4375ten.
Pertama, tukarkan nombor floating point kepada floating point asas 2.
          0.510 x 2 = 1.0      ,bermaksud 0.510 = 0.1 = 1.0 x 2-1
          -0.437510 x 2 = -0.875   ==> 0
          -0.875 x 2 = -1.75          ==> 1
          -0.75 x 2 = -1.5              ==> 1
          -0.5 x 2 = -1.0                ==> 1
Jadi, -0.437510 = -0.0111=  -0.1112 x 2-1  = -1.112 x 2-2

Tambah biased exponent.
          (-1+127) + (-2+127) + 127 = 126 + 125 – 127 = 124

Kedua, darab kedua-dua nombor itu.
                             1.0002
                   X       1.1102
                                                    
                               0000
                             1000
                           1000  
                        1000   
                                           
                        11100002
                                                    
Jawapan adalah 1.112 x 2-3

Ketiga, jawapan telah berada dalam bentuk normalize, lanjut kepada pemeriksaan kewujudan overflow atau underflow.
254>=124>=1, tiada overflow dan underflow.

Langkah keempat, bundarkan jawapan. Tiada perubahan dalam kes ini.

Langkah kelima, jawapan tidak sama dengan operand original, tandakan sign negatif di depannya.
                   -1.112 x 2-3


Written by,
QUEK XIN YI
B031210203



No comments:

Post a Comment