最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言詳細(xì)圖解浮點(diǎn)型數(shù)據(jù)的存儲(chǔ)實(shí)現(xiàn)

 更新時(shí)間:2022年05月06日 15:07:35   作者:利刃Cc  
使用編程語(yǔ)言進(jìn)行編程時(shí),需要用到各種變量來(lái)存儲(chǔ)各種信息。變量保留的是它所存儲(chǔ)的值的內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個(gè)變量時(shí),就會(huì)在內(nèi)存中保留一些空間。您可能需要存儲(chǔ)各種數(shù)據(jù)類型的信息,操作系統(tǒng)會(huì)根據(jù)變量的數(shù)據(jù)類型,來(lái)分配內(nèi)存和決定在保留內(nèi)存中存儲(chǔ)什么

在引入知識(shí)之前,先來(lái)看一個(gè)案例,就知道了解浮點(diǎn)型數(shù)據(jù)存儲(chǔ)的重要性與必要性。

舉個(gè)例子:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int num = 9;
	float *pnum = (float *)&num;//強(qiáng)制轉(zhuǎn)換類型
	printf("n的值為:%d\n",n);
	printf("*pFloat的值為:%f\n",*pnum);
	*pnum = 9.0;
	printf("num的值為:%d\n",n);
	printf("*pFloat的值為:%f\n",*pnum);
	return 0;
}

一般情況下我們都會(huì)認(rèn)為*pnum打印的就是n的值,只不過(guò)是以浮點(diǎn)型打印出來(lái),所以是9.000000啊,然后下面的n又因?yàn)?pnum的修改,加之因?yàn)?d輸出,所以還是9啊,但是結(jié)果不是,打印出來(lái)的結(jié)果如下圖所示:

結(jié)果與我們想的有很大的偏差。。。。。那就有必要讓我們來(lái)了解浮點(diǎn)型數(shù)據(jù)的存儲(chǔ)啦!

1.首先,根據(jù)上面的實(shí)例,我們可以發(fā)現(xiàn)整型和浮點(diǎn)型數(shù)據(jù)的存儲(chǔ)方法是不一樣的!

2.那么浮點(diǎn)型數(shù)據(jù)是怎么存儲(chǔ)的呢?

(1)根據(jù)國(guó)際標(biāo)準(zhǔn)IEEE(電子和電子工程協(xié)會(huì))754,任意一個(gè)二進(jìn)制浮點(diǎn)數(shù)V可以表示為下面的形式:

## (-1)^S * M * 2^E

## (-1)^S 表示符號(hào)位,當(dāng)S=0時(shí),V為正數(shù);當(dāng)S=1時(shí),V為負(fù)數(shù)。

## M 表示有效數(shù)字,且1<=M<2

## 2^E表示指數(shù)位

舉例來(lái)說(shuō):十進(jìn)制的 5.0,寫成二進(jìn)制是 101.0,相當(dāng)于 1.01 *2^2 。那么,按照上面的V的格式,可以得出S=0,M=1.01,E=2。

十進(jìn)制的 -5.0,寫成二進(jìn)制是 -101.0 ,相當(dāng)于 -1.01 * 2^2 。那么,S=1,M=1.01,E=2。

IEEE 754規(guī)定對(duì)于任意一個(gè)浮點(diǎn)數(shù)V都可以表示成V=(-1)^s * M *2^E,那我們是不是只要知道S、M、E三個(gè)值就可以確定一個(gè)浮點(diǎn)數(shù)?事實(shí)上,c語(yǔ)言內(nèi)存存儲(chǔ)浮點(diǎn)數(shù)時(shí),也確實(shí)是只存儲(chǔ)S、和指數(shù)E有關(guān)的一個(gè)值、和M有關(guān)的一個(gè)值(注意,這里不是直接存E、M) 詳情如下:

相對(duì)應(yīng)的float型是32位的,它的存儲(chǔ)空間如下:

相對(duì)應(yīng)的double型是64位的,它的存儲(chǔ)空間如下:

對(duì)于M與E的特別規(guī)定:

E的使用:

所以我們?cè)賹?duì)剛才的代碼加以解釋:

1.首先我們先把n的補(bǔ)碼寫出來(lái),因?yàn)閚是正數(shù),所以它的原反補(bǔ)相同。

2.按照上面的方法,把n的補(bǔ)碼分解后發(fā)現(xiàn)它的E為全0,所以相當(dāng)于一個(gè)無(wú)窮小的數(shù)字,所以此時(shí)*p為0.000000……

3.將*p改成9.0后按照上面的方法,先改成二進(jìn)制 1001.1,然后寫成 (-1)^0 * 1.001 * 2^3,最后按照格式變成補(bǔ)碼,存到內(nèi)存中去,此時(shí)補(bǔ)碼為01000001000100000000000000000000,而n為整型數(shù)據(jù),所以先取出這個(gè)補(bǔ)碼,又因?yàn)槠錇檎龜?shù),所以直接將補(bǔ)碼轉(zhuǎn)為十進(jìn)制%d輸出:

結(jié)果與我們之前執(zhí)行的結(jié)果一致!

浮點(diǎn)型數(shù)據(jù)存儲(chǔ)是很重要的知識(shí)點(diǎn),它也加強(qiáng)了我們對(duì)數(shù)據(jù)存儲(chǔ)的了解!

到此這篇關(guān)于C語(yǔ)言詳細(xì)圖解浮點(diǎn)型數(shù)據(jù)的存儲(chǔ)實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C語(yǔ)言數(shù)據(jù)存儲(chǔ)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易版掃雷

    利用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易版掃雷

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易版掃雷,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • 基于指針的數(shù)據(jù)類型與指針運(yùn)算小結(jié)

    基于指針的數(shù)據(jù)類型與指針運(yùn)算小結(jié)

    以下是對(duì)指針的數(shù)據(jù)類型與指針運(yùn)算進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-09-09
  • 淺談C++/C關(guān)于#define的那些奇奇怪怪的用法

    淺談C++/C關(guān)于#define的那些奇奇怪怪的用法

    本文主要介紹了C++/C關(guān)于#define的那些奇奇怪怪的用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 使用UDP協(xié)議實(shí)現(xiàn)單詞翻譯服務(wù)器

    使用UDP協(xié)議實(shí)現(xiàn)單詞翻譯服務(wù)器

    這篇文章主要為大家詳細(xì)介紹了如何使用UDP協(xié)議實(shí)現(xiàn)英文單詞翻譯服務(wù)器,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解下
    2023-08-08
  • C++對(duì)象與繼承使用中一些問(wèn)題介紹

    C++對(duì)象與繼承使用中一些問(wèn)題介紹

    大家好,本篇文章主要講的是C++對(duì)象與繼承使用中一些問(wèn)題介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • C語(yǔ)言動(dòng)態(tài)內(nèi)存分配函數(shù)的實(shí)現(xiàn)

    C語(yǔ)言動(dòng)態(tài)內(nèi)存分配函數(shù)的實(shí)現(xiàn)

    這篇文章主要介紹了C語(yǔ)言動(dòng)態(tài)內(nèi)存分配函數(shù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 一文帶你搞懂C++中的流量控制

    一文帶你搞懂C++中的流量控制

    限流可以認(rèn)為服務(wù)降級(jí)的一種,限流就是限制系統(tǒng)的輸入和輸出流量已達(dá)到保護(hù)系統(tǒng)的目的,這篇文章小編就來(lái)帶大家深入了解一下如何利用C++實(shí)現(xiàn)流量控制吧
    2023-10-10
  • C++中overload,override,overwrite的區(qū)別詳細(xì)解析

    C++中overload,override,overwrite的區(qū)別詳細(xì)解析

    以下是對(duì)C++中overload,override,overwrite的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-09-09
  • C利用語(yǔ)言實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)之隊(duì)列

    C利用語(yǔ)言實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)之隊(duì)列

    隊(duì)列 (Queue):簡(jiǎn)稱隊(duì),是另一種限定性的線性表,它只允許在表的一端插入元素,而在另一端刪除元素。q=(a1, a2, a3, … an),其中a1為隊(duì)頭,an為隊(duì)尾,下面文章小編將為大家詳細(xì)介紹,需要的下伙伴可以參考一下
    2021-10-10
  • 如何編譯libfreetype方法詳解

    如何編譯libfreetype方法詳解

    libfreetype是為跨平臺(tái)設(shè)計(jì)的,在windows下要編譯的話,可以直接打開(kāi)目錄進(jìn)行編譯,本文將詳細(xì)介紹libfreetype編譯
    2012-11-11

最新評(píng)論

库伦旗| 北海市| 石台县| 盈江县| 永安市| 理塘县| 衡东县| 博白县| 牟定县| 扎赉特旗| 淄博市| 合阳县| 砚山县| 益阳市| 迁安市| 广丰县| 始兴县| 阜康市| 武汉市| 木兰县| 桐梓县| 武清区| 武穴市| 锡林郭勒盟| 喀什市| 沈阳市| 南通市| 上饶县| 水富县| 紫阳县| 额尔古纳市| 河北省| 万山特区| 白水县| 梅州市| 武威市| 万州区| 普兰店市| 扎囊县| 肃南| 连山|