欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

DSP中浮點(diǎn)轉(zhuǎn)定點(diǎn)運(yùn)算--浮點(diǎn)數(shù)的存儲(chǔ)格式

 更新時(shí)間:2016年06月17日 09:53:22   作者:ganxingming  
本文主要介紹DSP中浮點(diǎn)數(shù)的存儲(chǔ)格式,很值得學(xué)習(xí)一下,需要的朋友可以參考一下。

二:浮點(diǎn)數(shù)的存儲(chǔ)格式

2.1 IEEE floating point standard

  上面我們說了,浮點(diǎn)數(shù)的小數(shù)點(diǎn)是不固定的,如果每個(gè)人都按照自己的愛好存儲(chǔ)在電腦里,那不就亂套了嗎?那么怎么在計(jì)算機(jī)中存儲(chǔ)這種類型的數(shù)字呢?象這類古老的問題前人早都為我們做好了相應(yīng)的規(guī)范,無規(guī)矩不成方圓嗎。我們平時(shí)所說的浮點(diǎn)數(shù)的存儲(chǔ)規(guī)范,就是由IEEE指定的,具體的規(guī)范文件是:IEEE Standard 754 for Binary Floating-Point Arithmetic。大家可以很容易的從網(wǎng)絡(luò)上下載到這篇文檔。

  在c語言中,單精度(float)數(shù)據(jù)類型為32bits,具體的如下圖所示:

http://img.jbzj.com/file_images/article/201606/2016617102352889.png

整個(gè)32bits分三部分,即

  Sign:符號(hào)位,1 bit,0為正,1為負(fù);

  Exponent(bias):指數(shù)部分,8 bits,存儲(chǔ)格式為移碼存儲(chǔ)(后面還會(huì)說明),偏移量為127;

  Mantissa(fraction):尾數(shù)部分。

  對(duì)應(yīng)的雙精度(double)類型的格式為:

http://img.jbzj.com/file_images/article/201606/2016617102402031.png

同樣,64位也被分為了三部分,對(duì)照單精度,不用我說就可以理解各個(gè)部分的含義了吧?

  是不是有點(diǎn)迷糊了,不要怕,理論這個(gè)東西最能忽悠人了,看起來很高深,其實(shí)也就是個(gè)屁大的事,舉個(gè)例子就很容易明白了。

舉例說明,如3.24x103,則對(duì)應(yīng)的部分為,Sign為0,3為指數(shù)部分(注意計(jì)算機(jī)里面存儲(chǔ)的不是3,這里僅僅為了說明),3.24為尾數(shù)。我們知道,計(jì)算機(jī)“笨”的要死,只認(rèn)識(shí)0和1,那么到底一個(gè)浮點(diǎn)數(shù)值在計(jì)算機(jī)存儲(chǔ)介質(zhì)中是如何存儲(chǔ)的呢?

例如,我們要想偷窺浮點(diǎn)類型的值4.25在計(jì)算機(jī)硬盤中存儲(chǔ)的廬山真面目,請(qǐng)跟我來:首先把4.25轉(zhuǎn)換成二進(jìn)制的表達(dá)方式,即100.01,在詳細(xì)點(diǎn),變成1.0001x22,好了,對(duì)號(hào)入座把。

Sign=0;

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

Mantissa=1.0001-1.0=0001(規(guī)格化后,小數(shù)點(diǎn)前總是整數(shù)1,全世界人都知道前面是1不是0,所以省略不寫了,即尾數(shù)部分不包括整數(shù)部分;當(dāng)別人問你,為什么23 bit的尾數(shù)部分可以表示24位的精度,知道怎么回答了吧。 靠,什么,沒有看懂,再仔細(xì)讀兩便就知道了)。

 http://img.jbzj.com/file_images/article/201606/2016617102409132.png

對(duì)照上面的圖示,相信你已經(jīng)看明白了吧?相信你的智商。為了加深認(rèn)識(shí),再來一個(gè)。如果給定你一個(gè)二進(jìn)制數(shù)字串,01000000100010000000000000000000,并告訴你這是一個(gè)float類型的值,讓你說出它是老幾,知道怎么算了吧?如果不知道,看下面的圖,我就不廢話解釋了。

http://img.jbzj.com/file_images/article/201606/2016617102421605.png

2.2深入理解浮點(diǎn)存儲(chǔ)格式

為了更深入的理解浮點(diǎn)數(shù)的格式。我們使用C語言來做一件事。在C語言的世界里,強(qiáng)制類型轉(zhuǎn)換,大家應(yīng)該都很熟悉了。例如:

復(fù)制代碼 代碼如下:

float f=4.6;

int i;

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

..

下面我們不使用強(qiáng)制類型轉(zhuǎn)化,我們自己來計(jì)算f轉(zhuǎn)換成整形應(yīng)該等于幾?

把主要代碼帖出來,如下:

復(fù)制代碼 代碼如下:
//取23+1位的尾數(shù)部分

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

// 提取指數(shù)部分

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

if (exponent < 0)

ival = (ival<< -exponent);

else

ival = (ival >> exponent);

// 如果小于0,則將結(jié)果取反

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

ival = -ival;

好好琢磨琢磨吧,看明白了,就說明你基本明白了浮點(diǎn)數(shù)的存儲(chǔ)格式,如果沒有看明白,接著看,知道明白為止。

以上就是本文的全部?jī)?nèi)容,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++程序操作文件對(duì)話框的方法

    C++程序操作文件對(duì)話框的方法

    這篇文章主要介紹了C++如何操作文件對(duì)話框,本文我們就來講述一下C++在操作文件夾對(duì)話框的相關(guān)細(xì)節(jié),給大家借鑒和參考,感興趣的朋友一起看看吧
    2022-06-06
  • C++標(biāo)準(zhǔn)庫bitset類型的簡(jiǎn)單使用方法介紹

    C++標(biāo)準(zhǔn)庫bitset類型的簡(jiǎn)單使用方法介紹

    這篇文章主要介紹了C++標(biāo)準(zhǔn)庫bitset類型的簡(jiǎn)單使用方法,需要的朋友可以參考下
    2017-07-07
  • C語言冒泡排序算法代碼詳解

    C語言冒泡排序算法代碼詳解

    大家好,本篇文章主要講的是C語言冒泡排序算法代碼詳解,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • C++深入講解new與deleted關(guān)鍵字的使用

    C++深入講解new與deleted關(guān)鍵字的使用

    這篇文章主要介紹了C++中new與deleted關(guān)鍵字的使用,new在動(dòng)態(tài)內(nèi)存中為對(duì)象分配空間并返回一個(gè)指向該對(duì)象的指針;delete接受一個(gè)動(dòng)態(tài)對(duì)象的指針, 銷毀該對(duì)象, 并釋放與之關(guān)聯(lián)的內(nèi)存
    2022-05-05
  • C++ Boost Serialization庫超詳細(xì)獎(jiǎng)金額

    C++ Boost Serialization庫超詳細(xì)獎(jiǎng)金額

    Boost是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱。Boost庫是一個(gè)可移植、提供源代碼的C++庫,作為標(biāo)準(zhǔn)庫的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱
    2022-12-12
  • C++使用JsonCpp庫操作json格式數(shù)據(jù)示例

    C++使用JsonCpp庫操作json格式數(shù)據(jù)示例

    這篇文章主要介紹了C++使用JsonCpp庫操作json格式數(shù)據(jù),結(jié)合實(shí)例形式詳細(xì)分析了JsonCpp庫的下載及C++使用JsonCpp庫對(duì)json格式數(shù)據(jù)序列化相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • Lambda表達(dá)式里面修改外部變量問題

    Lambda表達(dá)式里面修改外部變量問題

    這篇文章主要介紹了Lambda表達(dá)式里面修改外部變量的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • C/C++實(shí)現(xiàn)遍歷文件夾最全方法總結(jié)

    C/C++實(shí)現(xiàn)遍歷文件夾最全方法總結(jié)

    這篇文章主要為大家介紹了C/C++實(shí)現(xiàn)遍歷文件夾功能的最全方法總結(jié),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-09-09
  • 詳解C++的JSON靜態(tài)鏈接庫JsonCpp的使用方法

    詳解C++的JSON靜態(tài)鏈接庫JsonCpp的使用方法

    這篇文章主要介紹了C++的JSON靜態(tài)鏈接庫JsonCpp的使用方法,演示了使用JsonCpp生成和解析JSON的方法,以及C++通過JSON方式的socket通信示例,需要的朋友可以參考下
    2016-03-03
  • C++實(shí)現(xiàn)掃雷游戲

    C++實(shí)現(xiàn)掃雷游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評(píng)論