真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

【C語言】浮點(diǎn)型的存儲(chǔ)方式-創(chuàng)新互聯(lián)

目錄

創(chuàng)新互聯(lián)是專業(yè)的清鎮(zhèn)網(wǎng)站建設(shè)公司,清鎮(zhèn)接單;提供成都網(wǎng)站建設(shè)、網(wǎng)站制作,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行清鎮(zhèn)網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

一、浮點(diǎn)型和整型存儲(chǔ)方式一樣嗎?

二、浮點(diǎn)型的存儲(chǔ)規(guī)則

2.1? S,M,E求法

2.2 如何存放S,M,E?

2.2.1 IEEE 754規(guī)定

2.2.2 特別的規(guī)定

2.2.3? 驗(yàn)證

2.3?取出規(guī)則

2.3.1 E不全為0或不全為1

2.3.2 E為全0

2.3.3?E為全1

2.3.4驗(yàn)證

END.


一、浮點(diǎn)型和整型存儲(chǔ)方式一樣嗎?

嘗試著做一下,看答案是否和你想得相同,如果不一樣,那你算是找對(duì)文章了。

答案1:是以整型的方式存儲(chǔ),以整型的方式取出

答案2:是以整型的方式存儲(chǔ),以浮點(diǎn)型的方式取出

答案3:是以浮點(diǎn)型的方式存儲(chǔ),以整型的方式取出

答案4:是以浮點(diǎn)型的方式存儲(chǔ),以浮點(diǎn)型的方式取出

由此我們可以得知,整型的存儲(chǔ)方式和浮點(diǎn)型的存儲(chǔ)方式是不一樣的

二、浮點(diǎn)型的存儲(chǔ)規(guī)則 2.1? S,M,E求法

根據(jù)國際標(biāo)準(zhǔn)IEEE 754,任何一個(gè)二進(jìn)制的浮點(diǎn)數(shù)都能表示為以下方式

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

浮點(diǎn)數(shù)為正數(shù)時(shí)S=0,反之S=1

M表示有效數(shù)字,在1~2之間(二進(jìn)制)

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

用一個(gè)實(shí)例來幫助大家理解

寫出5.5對(duì)應(yīng)的式子

5.5的二進(jìn)制:101.1(小數(shù)點(diǎn)右邊是從2的-1次方開始)

S=0(5.5為正數(shù))

E=2(轉(zhuǎn)換成科學(xué)計(jì)數(shù)法:1.011小數(shù)點(diǎn)左移兩位)

M=1.011

既然浮點(diǎn)型可以用SEM來表示,那我們存放這三個(gè)值是不是就間接的把數(shù)據(jù)存在內(nèi)存中了

所以在內(nèi)存中存放浮點(diǎn)型就是在存放SME

2.2 如何存放S,M,E? 2.2.1 IEEE 754規(guī)定

2.2.2 特別的規(guī)定

存儲(chǔ)M

在我們?nèi)時(shí)會(huì)將它轉(zhuǎn)換為1.xxxxxxxx(范圍在1~2之間的數(shù)),如此我們存儲(chǔ)時(shí)會(huì)一直存放一個(gè)不變的數(shù)1

IEEE 754規(guī)定:在計(jì)算機(jī)保存M時(shí),默認(rèn)他的第一位永遠(yuǎn)是1,因此可以將它舍去,只存儲(chǔ)小數(shù)點(diǎn)后的數(shù)據(jù),這樣還可以提高精度

存儲(chǔ)E

當(dāng)我們?cè)趦?nèi)存中存儲(chǔ)E時(shí),是從第二位開始的,沒有符號(hào)位,所以它是一個(gè)無符號(hào)整數(shù)

當(dāng)它占8位時(shí)(float)數(shù)據(jù)范圍0~255,占11位時(shí)(double)數(shù)據(jù)范圍0~2047

但是,我們?cè)趯?shí)際計(jì)算中E是可能出現(xiàn)負(fù)數(shù)的比如0.5

0.5的二進(jìn)制:0.1

S:0

M:1.0(科學(xué)計(jì)數(shù)法的形式,小數(shù)點(diǎn)向右移1位)

E:-1

當(dāng)E出現(xiàn)負(fù)數(shù),但內(nèi)存中不能表示負(fù)數(shù),因?yàn)樗菬o符號(hào)類型的

IEEE 754規(guī)定:再存入真實(shí)的E之前要加一個(gè)中間數(shù),8位時(shí)加127,11位時(shí)加1023,如此就可以解決出現(xiàn)負(fù)數(shù)的情況

2.2.3? 驗(yàn)證

我們進(jìn)行一個(gè)簡(jiǎn)單的驗(yàn)證,同時(shí)讓大家的記憶更加深刻

如果你在困惑內(nèi)存中存放的為什么是倒過來的

這涉及到大小端的問題,在上一篇整型數(shù)據(jù)的存儲(chǔ)時(shí)詳細(xì)的講解了這個(gè)問題,在此就不過多贅述

【C語言】整型的存儲(chǔ)方式(大小端,原碼,反碼,補(bǔ)碼)

2.3?取出規(guī)則 2.3.1 E不全為0或不全為1

S:存的什么就取出什么

E:當(dāng)E的范圍是8位時(shí)(float),存的時(shí)候+127,取得時(shí)候-127,得到的就是真實(shí)值

當(dāng)E的范圍是11位時(shí)(double),存的時(shí)候+1023,取得時(shí)候-1023,得到的就是真實(shí)值

M:存的時(shí)候,只存了小數(shù)點(diǎn)右邊的值,取出來的時(shí)候要在前面加上1

2.3.2 E為全0

S:存的什么就取出什么

E:直接用1-127(1-1023)就為真實(shí)值

M:不用在加前面的1,直接是0.xxxxxxx

2.3.3?E為全1

存放的是無窮大的數(shù)字,存取規(guī)則和第一種情況相同。

2.3.4驗(yàn)證
// 這個(gè)是上面5.5存進(jìn)去的列子
// 0 10000001 01100000000000000000000
// S    E          M
// S =0 是正數(shù)
// E = (10000001)129 - 127 = 2
// M = 0.011+1 =1.011
// (-1)^S*M*2^E
// 由此可以寫出對(duì)應(yīng)的數(shù)字

了解了怎樣存儲(chǔ)和取出浮點(diǎn)型數(shù)據(jù),開頭的那道程序是否有了不一樣的見解

答案1和答案4

他們就是整型的方式存儲(chǔ),整型的方式取出,浮點(diǎn)型的方式存儲(chǔ),浮點(diǎn)型的方式取出

這里解析答案2和答案3

int main()
{
	int n = 9;
	float* pFloat = (float*)&n;
	//整型方式存進(jìn)去的是補(bǔ)碼
	//00000000000000000000000000001001		//9的原碼,正數(shù)的原反補(bǔ)相同
	//浮點(diǎn)型的方式取出,就認(rèn)為里面存的是浮點(diǎn)類型,要用浮點(diǎn)型的規(guī)則取出
	//0 00000000 00000000000000000001001	
	//S    E          M
	//S = 0
	//E = 1-127 = -126
	//M = 0.00000000000000000001001	
	//(-1)*0*0.00000000000000000001001	*2^-128
	//是一個(gè)非常小的數(shù)字接近于0,float精度不夠,所以只能打印出0.000000
	printf("*pFloat的值為:%f\n", *pFloat);

	*pFloat = 9.0;
	//浮點(diǎn)型的方式存進(jìn)去,整型的方式取出來
	//9的二進(jìn)制:1001		
	// S = 0
	// E = 3 +127 =130
	// M = 1.001
	//實(shí)際在內(nèi)存中存儲(chǔ)的是
	//0 10000010 00100000000000000000000
	//用整型的方式取出,就認(rèn)為存進(jìn)去的是補(bǔ)碼(正數(shù),原反補(bǔ)相同)
	//01000001000100000000000000000000 (原碼)
	//原碼換算成十進(jìn)制為:1,091,567,616
	printf("num的值為:%d\n", n);
	return 0;
}

END.

有沒有一種豁然開朗的感覺呢?有沒有感覺到,生硬的規(guī)則下又透露出一絲絲的合理,讓我對(duì)前輩們又多了一份敬佩。

如果對(duì)整型的存儲(chǔ)有不清楚的地方,可以翻看我的另一篇文章.

【C語言】整型的存儲(chǔ)方式(大小端,原碼,反碼,補(bǔ)碼)

最后送給大家一句名言:

Genius only means hard-working all one's life. ——Mendeleyev? Russian chemist

天才只意味著終身不懈地努力?!韲瘜W(xué)家 門捷列耶夫

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


當(dāng)前題目:【C語言】浮點(diǎn)型的存儲(chǔ)方式-創(chuàng)新互聯(lián)
瀏覽地址:http://weahome.cn/article/cdpeeg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部