Pages - Menu

2016年7月21日 星期四

IEEE754 十六進位轉浮點數

上次有寫到 16進位轉浮點數 的程式寫法。
這次來探討,用手如何計算…
詳細文章請參考:這篇
我只說結論。細部請參考上面文章。
當你得到兩組16進位的數字,先將他轉成二進位,高低位元要轉置的請記得自己轉。
以41 2C 57 57來說 轉成二進位變成
0100 0001 0010 1100 0101 0111 0101 0111
再來切割一下,
S E   M                                                                                                                       0 10000010 01011000101011101010111
V=(-1)s x M x 2E
而E全為0 跟全為1 有不同的算法這邊不討論,請往上點連結
帶入以上公式會得到  1 x M x 2(130-127)
再來重點的M(小數點部份),很複雜也很麻煩,首先他有22bit,
所以會變成 0x2-1+1x2-2+0x2-3+1x2-4+1x2-5+…..
0是二進位的數字,-1 ,-2 ,-3 是按照順序排下去的。所以要算到2的負22次方…
所以  0 + 1/4 + 0 + 1/16 + 1/32   約  0.3125…
此網站 換算出來 大約是 1.346….,得M。
最後相乘得出結果 10.7713 。
還是用程式算比較快……..

沒有留言:

張貼留言