柚子快報(bào)邀請碼778899分享:c語言 浮點(diǎn)數(shù)在內(nèi)存中的存儲
柚子快報(bào)邀請碼778899分享:c語言 浮點(diǎn)數(shù)在內(nèi)存中的存儲
??根據(jù)國際標(biāo)準(zhǔn)IEEE(電?和電??程協(xié)會)754,任意?個(gè)?進(jìn)制浮點(diǎn)數(shù)V可以表?成下?的形式:V ??= ?(?1) ^S*?M ? 2^E? ? (?1)S 表?符號位,當(dāng)S=0,V為正數(shù);當(dāng)S=1,V為負(fù)數(shù) ? M表?有效數(shù)字,M是?于等于1,?于2的 ? 2E 表?指數(shù)位?
列如:5.0(5的二進(jìn)制為101)=1.01*2^2=(-1)^0*1.01*2^2
對于任意一個(gè)浮點(diǎn)數(shù)我們都可以將其寫類似于科學(xué)計(jì)數(shù)法的方式,只是這里使用的是二進(jìn)制,同時(shí)用-1的0次或者1次來表示,即都可以寫成IEEE754所規(guī)定的標(biāo)準(zhǔn),其實(shí)計(jì)算機(jī)在進(jìn)行儲存的時(shí)候,就是儲存的S,M,E這三個(gè)數(shù)
對于32位的浮點(diǎn)數(shù),最?的1位存儲符號位S,接著的8位存儲指數(shù)E,剩下的23位存儲有效數(shù)字M對于64位的浮點(diǎn)數(shù),最?的1位存儲符號位S,接著的11位存儲指數(shù)E,剩下的52位存儲有效數(shù)字M
計(jì)算機(jī)對于M的存儲
由于每一個(gè)M都有一個(gè)1,所以計(jì)算機(jī)就可以直接儲存M的小數(shù)部分,這樣就避免了浪費(fèi)一個(gè)bit位,多一位來存儲小數(shù),可以提升精度。
十進(jìn)制小數(shù)轉(zhuǎn)化為二進(jìn)制
對于小數(shù)點(diǎn)后面的部分,一般的放法是乘2法,即對于十進(jìn)制的小數(shù)先乘以2,要是有進(jìn)位1,就拿出來,要是沒有,就拿出來0,然后繼續(xù)拿出乘以后的小數(shù)點(diǎn)乘以2,這樣一直循環(huán),直到乘出來數(shù)字沒有小數(shù)了,按照先后順序排列這些拿出來的0或者1,即為對應(yīng)的二進(jìn)制數(shù)列
但對于一些相對于簡單的,我們就可以根據(jù)二進(jìn)制中小數(shù)部分的權(quán)重來直接寫出,0.11111對應(yīng)的權(quán)重從左到右分別就是2的負(fù)一次(0.5),2的負(fù)二次(0.25),2的負(fù)三次(0.125).....,我們通過這些組合就不難看出一些簡單的小數(shù),列如0.75就是0.5+0.25即二進(jìn)制0.11
同時(shí),對于一些小數(shù),3.14無法精確的算出其二進(jìn)制的小數(shù)位,此時(shí)計(jì)算機(jī)就會儲存一個(gè)非常接近的數(shù)字來表示它
計(jì)算機(jī)對于E的儲存
我們知道,在科學(xué)計(jì)數(shù)法中,E既可以是正數(shù),也可以是負(fù)數(shù),那么我們該怎么儲存呢......
IEEE754于是就規(guī)定,我們在存儲的時(shí)候,必須要給E加上一個(gè)中間值,讓E成為一個(gè)正數(shù),對于8位的E,中間值位127,對于11位的E,這個(gè)中間值位1023。列如:2^10,E=10,對于8位E來說,儲存的數(shù)字就等于10+127=137。
對于一些特殊的E
1.E全為1,2的這么多次將是一個(gè)極其大的數(shù)字,計(jì)算機(jī)將認(rèn)為存儲的是一個(gè)無窮大的數(shù)字
2.E全為0,2的負(fù)這么多次將是一個(gè)非常小的數(shù)字,計(jì)算機(jī)對于此類數(shù)字E=1-127(1-1023)表示真實(shí)值,同時(shí)M不再加上1,計(jì)算機(jī)用來表示一個(gè)非常接近于0的數(shù)字,或則是正負(fù)0.
列如???????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
柚子快報(bào)邀請碼778899分享:c語言 浮點(diǎn)數(shù)在內(nèi)存中的存儲
相關(guān)文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。