程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> DSP中浮點轉定點運算--浮點數的存儲格局

DSP中浮點轉定點運算--浮點數的存儲格局

編輯:關於C++

DSP中浮點轉定點運算--浮點數的存儲格局。本站提示廣大學習愛好者:(DSP中浮點轉定點運算--浮點數的存儲格局)文章只能為提供參考,不一定能成為您想要的結果。以下是DSP中浮點轉定點運算--浮點數的存儲格局正文


二:浮點數的存儲格局

2.1 IEEE floating point standard

  下面我們說了,浮點數的小數點是不固定的,假如每一個人都依照本身的喜好存儲在電腦裡,那不就亂套了嗎?那末怎樣在盤算機中存儲這類類型的數字呢?象這類陳舊的成績後人早都為我們做好了響應的標准,無規則不成方圓嗎。我們日常平凡所說的浮點數的存儲標准,就是由IEEE指定的,詳細的標准文件是:IEEE Standard 754 for Binary Floating-Point Arithmetic。年夜家可以很輕易的從收集高低載到這篇文檔。

  在c說話中,單精度(float)數據類型為32bits,詳細的以下圖所示:

全部32bits分三部門,即

  Sign:符號位,1 bit,0為正,1為負;

  Exponent(bias):指數部門,8 bits,存儲格局為移碼存儲(前面還會解釋),偏移量為127;

  Mantissa(fraction):尾數部門。

  對應的雙精度(double)類型的格局為:

異樣,64位也被分為了三部門,對比單精度,不消我說便可以懂得各個部門的寄義了吧?

  是否是有點含混了,不要怕,實際這個器械最能忽悠人了,看起來很精深,其實也就是個屁年夜的事,舉個例子就很輕易明確了。

舉例解釋,如3.24x103,則對應的部門為,Sign為0,3為指數部門(留意盤算機外面存儲的不是3,這裡僅僅為了解釋),3.24為尾數。我們曉得,盤算機“笨”的要逝世,只熟悉0和1,那末究竟一個浮點數值在盤算機存儲介質中是若何存儲的呢?

例如,我們要想竊視浮點類型的值4.25在盤算機硬盤中存儲的廬山真面貌,請跟我來:起首把4.25轉換成二進制的表達方法,即100.01,在具體點,釀成1.0001x22,好了,對號入坐把。

Sign=0;

Exponent(bias)=2+127=129 (偏移量為127,就是直接加上個127了);

Mantissa=1.0001-1.0=0001(規格化後,小數點前老是整數1,全球人都曉得後面是1不是0,所以省略不寫了,即尾數部門不包含整數部門;當他人問你,為何23 bit的尾數部門可以表現24位的精度,曉得怎樣答復了吧。 靠,甚麼,沒有看懂,再細心讀兩便就曉得了)。

 

對比下面的圖示,信任你曾經看明確了吧?信任你的智商。為了加深熟悉,再來一個。假如給定你一個二進制數字串,01000000100010000000000000000000,並告知你這是一個float類型的值,讓你說出它是老幾,曉得怎樣算了吧?假如不曉得,看上面的圖,我就不空話說明了。

2.2深刻懂得浮點存儲格局

為了更深刻的懂得浮點數的格局。我們應用C說話來做一件事。在C說話的世界裡,強迫類型轉換,年夜家應當都很熟習了。例如:

float f=4.6;

int i;

i = (int)(f+0.5); // i=5

..

上面我們不應用強迫類型轉化,我們本身來盤算f轉換成整形應當等於幾?

把重要代碼帖出來,以下:

//取23+1位的尾數部門

int ival= ((*(int *)(&fval)) & 0x07fffff) | 0x800000;

// 提取指數部門

int exponent = 150 - (((*(int *)(&fval)) >> 23) & 0xff);

if (exponent < 0)

ival = (ival<< -exponent);

else

ival = (ival >> exponent);

// 假如小於0,則將成果取反

if ((*(int *)&fval) & 0x80000000)

ival = -ival;

好好揣摩揣摩吧,看明確了,就解釋你根本明確了浮點數的存儲格局,假如沒有看明確,接著看,曉得明確為止。

以上就是本文的全體內容,願望能給年夜家一個參考,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved