關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 基于IEEE 754的浮點數存儲格式分析研究

        基于IEEE 754的浮點數存儲格式分析研究

        作者: 時間:2012-06-04 來源:網絡 收藏

        一般地,32位字的第0位存放小數f的最低有效位LSB(the least significant bit),第22位存放小數f的最高有效位MSB(the most significant bit);第23位存放偏置指數的最低有效位LSB,第30位存放偏置指數的最高有效位MSB;最高位,第31位存放符號s。

        3.2 雙精度格式

        雙精度浮點格式共64位,占2個連續32位字,包含三個構成字段:52位的小數f,11位的偏置指數e,1位的符號位s。將這2個連續的32位字整體作為一個64位的字,進行重新編號。其中0:51位包含52位的小數f;52:62位包含11位的偏置指數e;而最高位,第63位包含符號位s。如圖2所示。

        圖 2 雙精度格式

        f[31:0]存放小數f的低32位,其中第0位存放整個小數f的最低有效位LSB,第31位存放小數f的低32位的最高有效位MSB。

        在另外的32位的字里,第0 到19位,即f[51:32],存放小數f的最高的20位,其中第0位存放這20位最高有效數中的最低有效位LSB,第19位存放整個小數f的最高有效位MSB。第20到30位,即e[52:62],存放11位的偏置指數e,其中第20位存放偏置指數的最低有效位LSB,第30位存放最高有效位MSB。最高位,第31位存放符號位s。

        在Intel x86結構計算機中,數據存放采用小端法(little endian),故較低地址的32位的字中存放小數f的f[31:0]位。而在在SPARC結構計算機中,因其數據存放采用大端法(big endian),故較高地址的32位字中存放小數f的f[31:0]位。

        3.3 擴展雙精度格式

        ⑴ 擴展雙精度格式(SPARC 結構計算機)

        該4倍精度浮點環境符合關于擴展雙精度格式的定義。該浮點環境的4倍精度浮點格式共128位,占4個連續32位字,包含3個構成字段:112位的小數f,15位的偏置指數e,和1位的符號s。將這4個連續的32位字整體作為一個128位的字,進行重新編號。其中0:110位包含小數f;112:126位包含偏置指數e;第127位包含符號位s。如圖3所示。

        在SPARC結構計算機中,地址最高的32位字存放小數的32位最低有效位,即f[31:0];但是在PowerPC結構計算機中,卻是地址最低的32位字存放這些位。

        緊鄰的兩個32位字(在SPARC機中向下計算,在PowerPC機中向上計算)分別存放f[63:32]和f[95:64]。

        最后一個字的第0到15位存放小數的最高16位,即f[111:96]。其中第0位存放該16位的最低有效位,第15位存放整個小數f的最高有效位。第16到30位存放15位的偏置指數e,其中第16位存放偏置指數的最低有效位,第30位存放它的最高有效位。最高位,第31位存放符號s。

        圖 3 擴展雙精度格式 (SPARC 結構計算機)

        ⑵ 擴展雙精度格式(Intel x86結構計算機)

        該浮點環境雙精度擴展格式符合雙精度擴展格式的定義。該浮點環境的擴展雙精度格式共80位,占3個連續32位字,包含四個構成字段:63位的小數f,1位顯式前導有效位(explicit leading significand bit)j,15位偏置指數e,和1位符號位s。將這3個連續的32位字整體作為一個96位的字,進行重新編號。其中0:63包含63位的小數f,第63位包含前導有效位j,64:78位包含15位的偏置指數e,最高位第79位包含符號位s。

        在Intel結構系計算機中,這些字段依次存放在十個連續的字節中。但是,由于 UNIX System V Application Binary Interface Intel 386 Processor Supplement (Intel ABI) 要求雙精度擴展參數,從而占用堆棧中3個相連地址的32位字,其中最高一個字的高16位未被使用,如圖4所示。

        圖4 擴展雙精度格式(Intel x86結構計算機)

        地址最低的32位字存放小數f的低32位,即f[31:0]。其中第0位存放整個小數f的最低有效位LSB 第31位存放小數低32位的最高有效位MSB。

        地址居中的32位字,第0到30位存放小數f的31位最高位,即f[62:32]。其中第0位存放31位最高小數位的最低有效位LSB,第30位存放整個小數的最高有效位,地址居中的32位字的最高位第31位存放顯式的前導有效位j。

        地址最高32位字里,第0到14位存放15位的偏置指數e,第0位存放偏置指數的最低有效位LSB,第14位存放最高有效位MSB,第15位存放符號位s。雖然地址最高的32位字的高16位在Intel x86結構系列機種未被使用,但他們對符合Intel ABI的規定來說,是必需的。

        4 總結

        以上討論了Intel x86、Power PC和SPARC平臺上使用的三種IEEE 754格式及其存儲格式,下面對的相關參數進行總結,具體見表2。

        1.jpg

        參考文獻

        [1] David Goldberg with Doug Priest. What Every Computer Scientist Should Know about Floating-Point Arithmetic. http://grouper.ieee.org/

        [2] Sun Corporation.Numerical Computation Guide, pp1-11. http://docs.sun.com

        [3] Randal E.Bryant,David O#39;Hallaron. Computer Systems Aprogrammer’s Perspective(英文版) [M] .北京:電子工業出版社,2004

        [4]David A. Patterson, John L. Hennessy.Computer Organization Design: The Hardware/Software Interface. (英文版 第二版) [M] . 北京:機械工業出版社,1999.275~321



        關鍵詞: IEEE 浮點數 存儲

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 浮梁县| 尼勒克县| 麻栗坡县| 交口县| 仁怀市| 仪征市| 台南县| 涪陵区| 长宁县| 建瓯市| 惠东县| 确山县| 元阳县| 筠连县| 荔浦县| 普洱| 香港| 盐城市| 淮北市| 仙游县| 廊坊市| 武隆县| 宁化县| 同仁县| 浦城县| 屏边| 新沂市| 华阴市| 平乐县| 文安县| 寿宁县| 巫山县| 务川| 文登市| 台湾省| 惠东县| 南充市| 九寨沟县| 甘泉县| 彝良县| 凤庆县|