浮點數的儲存(IEEE754)

來源:互聯網
上載者:User

VS2008 MSDN 中有 浮點數格式的詳細介紹,本文只是一個總結性的東西,欲

詳細研究請參考

(1)MSDN中輸入:IEEE,找到浮點數相關部分

(2)可以參考網上一些文章

         http://www.cnblogs.com/jillzhang/archive/2007/06/24/793901.html

         http://blog.csdn.net/ganxingming/article/details/1449526

         http://blog.csdn.net/zht_304/article/details/5461285

在VC中浮點數有以下幾種

                         符號位     指數位     尾數M   位移量

real*4                 1               8             23        127

real*8                 1              11            52        1023

real*10               1              15           64         16383

說明:

1. real*後面的數字代表是位元組數,如real*4,4個位元組,就是平常說的float

    real*8為8個位元組,平常所說的double,long double與double一樣也是

   real*8

2. real*4和real*8中尾數有1個前置1,但它並沒有儲存記憶體中,因此real*4

   和real*8的尾數實際上24位和53位。real*10並沒有隱含的前置1,所以存

  的就是尾數的實際位元

3. 位移量=2^(指數位-1)-1

下面看一個實際例子:1987.75如何用float儲存

首先將1987.75化成二進位形式:

1987.75D = 111  1100  0011.11B

                   = 1.1111  0000  1111  *  2^10 B

所以儲存為

0100   0100   1111   1000   0111   1000   0000   0000 B = 44F87800 H

由float儲存格式知,最高位是符號位,1987.75是正數,所以最高位是0,

接下來8位是指數位,指數是10,由於要加上位移量127,所以指數是137,

137化成2進位就是1000  1001,所以接下來的8位就是1000  1001,

中以紅色背景部分,接下來就是尾數了,注意對於float(即real*4)最高位

的1不儲存,所以1.1111  0000  1111隻有小數點後的1111  0000  1111

會儲存,小數點前的1不會儲存,故儲存為中的藍色背景部分,由於

尾數23位,所以後面不夠的全部補成0,下面用程式驗證一下:VC6.0或

VC2008中都可以

long a = 0x44F87800;float* pF = (float*)&a;CString str;str.Format(_T("%f"), *pF);AfxMessageBox(str);

通過程式可知上述結果正確。

VS2008 中的MSDN中有幾個例子,讀者可以自行參考一下。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.