摘要:一浮點型數(shù)據(jù)及其取值范圍二浮點型數(shù)據(jù)在內(nèi)存中的存儲一小數(shù)的二進制十進制轉(zhuǎn)二進制整數(shù)部分與整數(shù)原理相同,按照整數(shù)二進制轉(zhuǎn)換的規(guī)則,寫成對應的二進制數(shù)。全為表示浮點數(shù)的最大值或者最小值。
整數(shù)部分: 與整數(shù)原理相同,按照整數(shù)二進制轉(zhuǎn)換的規(guī)則,寫成對應的二進制數(shù)。
小數(shù)部分: 十進制小數(shù)轉(zhuǎn)換成二進制小數(shù)采用乘2取整,順序排列法。具體做法是:用2乘以十進制地小數(shù),將積的整數(shù)部分取出,作為十分位,再用2乘以剩下的小數(shù)部分,再將積的整數(shù)部分取出作百分位,重復進行,直到達到要求的精度。
例如:將十進制1.8125轉(zhuǎn)換成二進制
所以1.8125的二進制為1.1101。
把二進制數(shù)寫成加權(quán)系數(shù)展開形式,按十進制的加法規(guī)則求和,即按權(quán)相加。
例如:將二進制數(shù)1.1101轉(zhuǎn)換為十進制
根據(jù)國際標準IEEE(電氣和電子工程協(xié)會) 754,任意一個二進制浮點數(shù)V可以表示成下面的形式:
IEEE 754規(guī)定: 對于32位的浮點數(shù),最高的1位是符號位s,接著的8位是指數(shù)E,剩下的23位為有效數(shù)字M。
如圖表示float型在內(nèi)存中的存儲:
S的存儲較為簡單,只有1和0兩種情況:
對于float型,E共有個比特8位,可表示范圍 0~255,存入數(shù)據(jù)時,加上中間數(shù)127,這樣做可以便可以表示負數(shù),所以實際可保存數(shù)據(jù)范圍為[-127 ,128]。例如:101.1101科學計數(shù)法表示為(-1)^0 * 1.011101* 2^6,E為6,內(nèi)存中放6+127=133的二進制序列,取出時同理減123即可。
在保存M時,默認這個數(shù)的第一位是1,因此可以被舍去,只保存后面的xxxxxx部分。比如保存1.01的時候,只保存01,等到讀取的時候,再把第一位的1加上去。這樣做的目的,是節(jié)省1位有效數(shù)字。以32位浮點數(shù)為例,留給M只有23位,將第一位的1舍去以后,等于可以保存24位有效數(shù)字。
IEEE 754規(guī)定:對于64位的浮點數(shù),最高的1位是符號位S,接著的11位是指數(shù)E,剩下的52位為有效數(shù)字M。
雙精度浮點型與單精度浮點型存儲原理基本類似,不再詳細敘述,區(qū)別是
E全為0
E全為0時,浮點E的真實值為0-127(或者0-1023),表示一個接近于0的很小的浮點數(shù),還原時有效數(shù)字M不加省略的1。
所以浮點數(shù)不能直接比較大小,要考慮進制轉(zhuǎn)換時存在的誤差,不能用’==’。
E全為1
表示浮點數(shù)的最大值或者最小值。
#include #include 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); system("pause"); return 0;}
整型9在內(nèi)存中的存儲:
若按float型取出打印,則解讀為:
E為全0,所以printf("*pFloat的值為:%f/n", *pFloat)語句的結(jié)果為0.000000
浮點型9.0在內(nèi)存中的存儲:
這個二進制序列按整型打印時被解讀為整型數(shù)據(jù),將這個二進制序列直接轉(zhuǎn)換為10進制即為打印結(jié)果:
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/122424.html
摘要:在符號位中,表示正,表示負。我們知道對于整型來說,內(nèi)存中存放的是該數(shù)的補碼。在計算機系統(tǒng)中,數(shù)值一律用補碼來表示和存儲。表示有效數(shù)字,。規(guī)定對于位的浮點數(shù),最高的位是 ...
摘要:的理解和區(qū)別代表有符號,整數(shù)在內(nèi)存中存儲的二進制位的最高位為符號位,表示負數(shù),表示正數(shù)。那接下來我們來學習數(shù)據(jù)在所開辟的內(nèi)存空間時如何存儲的。請看下面例子為什么內(nèi)存中存儲的是補碼對于整數(shù)來說數(shù)據(jù)存放內(nèi)存中其實存放的是補碼。 ...
摘要:還不清楚原碼反碼補碼的可以到語言從入門到入土操作符篇中的移位操作符處學習一下。比如原碼反碼補碼原碼顯示值補碼數(shù)據(jù)存放內(nèi)存中其實存放的是補碼補碼的表示與存儲在計算機系統(tǒng)中,數(shù)值一律用補碼來表示和存儲。 ...
摘要:數(shù)據(jù)的存儲前言數(shù)據(jù)類型匯總整型家族浮點型家族自定義類型指針類型。整型家族注在之后的標準規(guī)定,將類型數(shù)據(jù)劃分為整型家族,因為字符在內(nèi)存中會將其轉(zhuǎn)化為碼值進行存儲。 ...
摘要:所有這些類型,在內(nèi)部統(tǒng)一用一個叫做的結(jié)構(gòu)表示,在源代碼中這個結(jié)構(gòu)名稱為。的具體定義在源代碼的文件中,下面是相關(guān)代碼的摘錄。 【轉(zhuǎn)】淺談PHP5中垃圾回收算法(Garbage Collection)的演化 前言 PHP是一門托管型語言,在PHP編程中程序員不需要手工處理內(nèi)存資源的分配與釋放(使用C編寫PHP或Zend擴展除外),這就意味著PHP本身實現(xiàn)了垃圾回收機制(Garbage C...
閱讀 1161·2021-11-16 11:45
閱讀 3172·2021-10-13 09:40
閱讀 768·2019-08-26 13:45
閱讀 1258·2019-08-26 13:32
閱讀 2213·2019-08-26 13:23
閱讀 964·2019-08-26 12:16
閱讀 2861·2019-08-26 11:37
閱讀 1796·2019-08-26 10:32