国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)在內(nèi)存中的存儲(chǔ)(2)

這篇具有很好參考價(jià)值的文章主要介紹了數(shù)據(jù)在內(nèi)存中的存儲(chǔ)(2)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

3. 浮點(diǎn)型在內(nèi)存中的存儲(chǔ)

常見的浮點(diǎn)數(shù):

3.14159
1E10 ------ 1.0 * 10^10
浮點(diǎn)數(shù)家族包括: float、double、long double 類型
浮點(diǎn)數(shù)表示的范圍:float.h中定義

3.1 一個(gè)例子

浮點(diǎn)數(shù)存儲(chǔ)的例子:

#include <stdio.h>

int main()
{
	int n = 9;
	float* pFloat = (float*)&n;
	
	printf("n的值為:%d\n", n);
	printf("*pFloat的值為:%f\n", *pFloat);
	
	*pFloat = 9.0;

	printf("num的值為:%d\n", n);
	printf("*pFloat的值為:%f\n", *pFloat);

	return 0;
}

輸出的結(jié)果是什么呢?
數(shù)據(jù)在內(nèi)存中的存儲(chǔ)(2),C語言,c語言,開發(fā)語言,算法
通過輸出的結(jié)果,我們可以得知:一個(gè)數(shù)以整型的形式放進(jìn)去,再以整型或浮點(diǎn)型的形式拿出來,結(jié)果是不一樣的;一個(gè)數(shù)以浮點(diǎn)型的形式放進(jìn)去,再以整型或浮點(diǎn)型的形式拿出來,結(jié)果也是不一樣的。因此,我們可以推出:整型和浮點(diǎn)型在內(nèi)存中的存儲(chǔ)方式是有差異的!

3.2 浮點(diǎn)數(shù)存儲(chǔ)規(guī)則

num 和 *pFloat 在內(nèi)存中明明是同一個(gè)數(shù),為什么浮點(diǎn)數(shù)和整數(shù)的解讀結(jié)果會(huì)差別這么大?
要理解這個(gè)結(jié)果,一定要搞懂浮點(diǎn)數(shù)在計(jì)算機(jī)內(nèi)部的表示方法。
詳細(xì)解讀:
根據(jù)國際標(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,V為正數(shù);當(dāng)S=1,V為負(fù)數(shù)。
  • M表示有效數(shù)字,大于等于1,小于2。
  • 2^E表示指數(shù)位。

數(shù)據(jù)在內(nèi)存中的存儲(chǔ)(2),C語言,c語言,開發(fā)語言,算法

IEEE 754規(guī)定:
對(duì)于32位的浮點(diǎn)數(shù),最高的1位符號(hào)位S,接著的8位指數(shù)E,剩下的23位有效數(shù)字M
數(shù)據(jù)在內(nèi)存中的存儲(chǔ)(2),C語言,c語言,開發(fā)語言,算法

對(duì)于64位的浮點(diǎn)數(shù),最高的1位符號(hào)位S,接著的11位指數(shù)E,剩下的52位有效數(shù)字M。
數(shù)據(jù)在內(nèi)存中的存儲(chǔ)(2),C語言,c語言,開發(fā)語言,算法

IEEE 754對(duì)有效數(shù)字M和指數(shù)E,還有一些特別規(guī)定:
前面說過,1≤M<2,也就是說,M可以寫成1.xxxxxx的形式,其中xxxxxx表示小數(shù)部分。IEEE 754規(guī)定,在計(jì)算機(jī)內(nèi)部保存M時(shí),默認(rèn)這個(gè)數(shù)的第一位總是1,因此可以被舍去,只保存后面的xxxxxx部分。比如保存1.01的時(shí)候,只保存01,等到讀取的時(shí)候,再把第一位的1加上去。這樣做的目的,是節(jié)省1位有效數(shù)字。以32位浮點(diǎn)數(shù)為例,留給M只有23位,將第一位的1舍去以后,等于可以保存24位有效數(shù)字。

至于指數(shù)E,情況就比較復(fù)雜:
首先,E為一個(gè)無符號(hào)整數(shù)(unsigned int)。這意味著,如果E為8位,它的取值范圍為0 ~ 255;如果E為11位,它的取值范圍為0 ~ 2047。但是,我們知道,科學(xué)計(jì)數(shù)法中的E是可以出現(xiàn)負(fù)數(shù)的,所以IEEE 754規(guī)定,存入內(nèi)存時(shí)E的真實(shí)值必須再加上一個(gè)中間數(shù),對(duì)于8位的E,這個(gè)中間數(shù)是127;對(duì)于11位的E,這個(gè)中間數(shù)是1023。比如,2^10的E是10,所以保存成32位浮點(diǎn)數(shù)時(shí),必須保存成10+127=137,即10001001。

int main()
{
	float f = 5.5;
	//101.1
	//1.011 * 2^2
	//(-1)^0 * 1.011 * 2^2
	//S = 0
	//M = 1.011
	//E = 2
	//01000000101100000000000000000000
	//0x40b00000
	return 0;
}

然后,指數(shù)E從內(nèi)存中取出還可以再分成三種情況:
E不全為0或不全為1

這時(shí),浮點(diǎn)數(shù)就采用下面的規(guī)則表示,即指數(shù)E的計(jì)算值減去127(或1023),得到真實(shí)值,再將有效數(shù)字M前加上第一位的1。

E全為0

這時(shí),浮點(diǎn)數(shù)的指數(shù)E等于1-127(或者1-1023)即為真實(shí)值,有效數(shù)字M不再加上第一位的1,而是還原為0.xxxxxx的小數(shù)。這樣做是為了表示±0,以及接近于0的很小的數(shù)字。

E全為1

這時(shí),如果有效數(shù)字M全為0,表示±無窮大(正負(fù)取決于符號(hào)位s)。


通過以上講解,我們就可以解釋一開始的代碼了:文章來源地址http://www.zghlxwxcb.cn/news/detail-724727.html

#include <stdio.h>

int main()
{
	int n = 9;
	//00000000000000000000000000001001
	float* pFloat = (float*)&n;
	
	printf("n的值為:%d\n", n);//9
	printf("*pFloat的值為:%f\n", *pFloat);//0.000000
	//0 00000000 00000000000000000001001
	//S E        M
	//E在內(nèi)存中是全0
	//0 -126     0.00000000000000000001001
	//(-1)^0 * 0.00000000000000000001001 * 2^-126
	
	*pFloat = 9.0;
	//1001.0
	///1.001 * 2^3
	//(-1)^0 * 1.001 * 2^3
	//S=0      M=1.001   E=3
	//01000001000100000000000000000000
	printf("num的值為:%d\n", n);//1091567616
	printf("*pFloat的值為:%f\n", *pFloat);//9.000000

	return 0;
}

到了這里,關(guān)于數(shù)據(jù)在內(nèi)存中的存儲(chǔ)(2)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【C語言】數(shù)據(jù)在內(nèi)存中的存儲(chǔ)

    【C語言】數(shù)據(jù)在內(nèi)存中的存儲(chǔ)

    什么叫做浮點(diǎn)數(shù),就是有小數(shù)的數(shù)據(jù)就要浮點(diǎn)數(shù),比如:5.5 6.5 9.0等一些數(shù)據(jù)就叫浮點(diǎn)數(shù),那么浮點(diǎn)數(shù)又是怎么在內(nèi)存中存放的呢,下面聽我一一道來。 浮點(diǎn)型的家族包括:float double long double 我們以以下代碼為例比較下浮點(diǎn)數(shù)和整型數(shù)據(jù)內(nèi)存中的存儲(chǔ)是如何的: 打印的結(jié)果

    2024年02月07日
    瀏覽(20)
  • 數(shù)據(jù)在內(nèi)存中的存儲(chǔ)(C語言)

    數(shù)據(jù)在內(nèi)存中的存儲(chǔ)(C語言)

    ? ?? 歡迎大家來到貝蒂大講堂?? ? ????養(yǎng)成好習(xí)慣,先贊后看哦~???? ? 所屬專欄:C語言學(xué)習(xí) ? 貝蒂的主頁:Betty‘s blog ? 我們?cè)缇蛯W(xué)完基本的數(shù)據(jù)類型,那這些數(shù)據(jù)類型到底在內(nèi)存中怎么存儲(chǔ)的呢~,今天貝蒂就帶大家一起深入學(xué)習(xí)一下吧 1.1 整型 貝蒂說:“因

    2024年02月02日
    瀏覽(16)
  • 【C語言】數(shù)據(jù)在內(nèi)存中的存儲(chǔ)詳解

    【C語言】數(shù)據(jù)在內(nèi)存中的存儲(chǔ)詳解

    我們可以把數(shù)據(jù)類型想象為一個(gè)矩形盒子,int、char 等類型 分別為不同的盒子 可以放著不同大小的東西(數(shù)據(jù))(即所占存儲(chǔ)空間的大?。?類型的的意義: 使用這個(gè)類型開辟內(nèi)存空間的大?。ù笮Q定了使用范圍) 如何看待內(nèi)存空間的視角。 注意 : 字符在內(nèi)存中存儲(chǔ)的是

    2024年02月13日
    瀏覽(30)
  • 【C語言】數(shù)據(jù)在內(nèi)存中的存儲(chǔ)(一)

    【C語言】數(shù)據(jù)在內(nèi)存中的存儲(chǔ)(一)

    內(nèi)置類型: 所占空間的大?。?類型的意義: 使用這個(gè)類型開辟空間的大小,決定只能使用的范圍。 整型家族: 浮點(diǎn)型家族: 構(gòu)造類型: 指針類型: 空類型: void表示空類型 通常用于函數(shù)的返回類型、函數(shù)的參數(shù)、指針類型。 變量創(chuàng)建是要在內(nèi)存開辟空間的,空間的大小

    2024年02月10日
    瀏覽(26)
  • 『C語言』數(shù)據(jù)在內(nèi)存中的存儲(chǔ)規(guī)則

    『C語言』數(shù)據(jù)在內(nèi)存中的存儲(chǔ)規(guī)則

    ?? 博客主頁 : 小羊失眠啦. ?? 系列專欄 : C語言 ??? 每日語錄 : 精誠所至,金石為開。 ?? 感謝大家點(diǎn)贊??收藏?評(píng)論?? 前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站。 小羊近期已經(jīng)將C語言初階學(xué)習(xí)

    2024年02月12日
    瀏覽(24)
  • 整形數(shù)據(jù)在內(nèi)存中的存儲(chǔ)(C語言)

    整形數(shù)據(jù)在內(nèi)存中的存儲(chǔ)(C語言)

    1.整形家族 2.(原碼、反碼、補(bǔ)碼)基礎(chǔ)知識(shí) 計(jì)算機(jī)中的整數(shù)有三種2進(jìn)制表示方法,即原碼、反碼和補(bǔ)碼。 三種表示方法均有符號(hào)位和數(shù)值位兩部分,符號(hào)位都是用0表示“正”,用1表示“負(fù)”。 正數(shù)的原、反、補(bǔ)碼都相同。 負(fù)整數(shù)的三種表示方法各不相同。 原碼 直接將數(shù)值

    2024年01月25日
    瀏覽(19)
  • C語言:數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式

    C語言:數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式

    關(guān)于整數(shù)在內(nèi)存中的存儲(chǔ)形式,在博主之前寫的文章里已經(jīng)介紹了!友友們可以去點(diǎn)下面鏈接去看,這里就不過多介紹。 C語言:進(jìn)制的轉(zhuǎn)換以及原碼、反碼、補(bǔ)碼 我們以整型在內(nèi)存中的存儲(chǔ)形式為基礎(chǔ),探究后面的內(nèi)容:整型提升與截?cái)唷⑺銛?shù)轉(zhuǎn)換、大小端字節(jié)序和字節(jié)序

    2024年01月23日
    瀏覽(22)
  • 【C語言】詳解數(shù)據(jù)在內(nèi)存中的存儲(chǔ)

    【C語言】詳解數(shù)據(jù)在內(nèi)存中的存儲(chǔ)

    計(jì)算機(jī)能夠處理的是二進(jìn)制的數(shù)據(jù), 整形和浮點(diǎn)型數(shù)據(jù)在內(nèi)存中也都是以二進(jìn)制的形式存儲(chǔ)的。 整數(shù)2進(jìn)制表示方法,即原、反、補(bǔ)碼,三種均有 符號(hào)位 和 數(shù)值位 倆部分,符號(hào)位用0表示 正 ,1表示 負(fù) 。 正 的整數(shù):原、反、補(bǔ)碼相同。 負(fù) 的整數(shù):原、反、補(bǔ)碼要進(jìn)行計(jì)

    2024年02月08日
    瀏覽(25)
  • 『C語言進(jìn)階』數(shù)據(jù)在內(nèi)存中的存儲(chǔ)規(guī)則

    『C語言進(jìn)階』數(shù)據(jù)在內(nèi)存中的存儲(chǔ)規(guī)則

    ?? 博客主頁 : 小羊失眠啦. ?? 系列專欄 : C語言 ??? 每日語錄 : 精誠所至,金石為開。 ?? 感謝大家點(diǎn)贊??收藏?評(píng)論?? 前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站。 小羊近期已經(jīng)將C語言初階學(xué)習(xí)

    2024年02月10日
    瀏覽(22)
  • C語言—深度剖析數(shù)據(jù)在內(nèi)存中的存儲(chǔ)

    C語言—深度剖析數(shù)據(jù)在內(nèi)存中的存儲(chǔ)

    內(nèi)置類型(C語言本身就具有的類型): 類型的意義: 1.使用這個(gè)類型開辟內(nèi)存空間的大小(大小決定了使用的范圍) 2.如何看待內(nèi)存空間的視角 整形家族: 注:字符類型底層存儲(chǔ)的是這個(gè)字符的ASCII值,ASCII值是個(gè)整數(shù) 浮點(diǎn)數(shù)家族: 構(gòu)造類型(自定義類型): 數(shù)組類型 注

    2024年02月03日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包