久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

2.2 浮點(diǎn)數(shù)類型

 quasiceo 2014-01-15
2.2 浮點(diǎn)數(shù)類型
2013-07-12 11:12:23     我來(lái)說(shuō)兩句 
收藏    我要投稿   
本書(shū)既是一本全面而系統(tǒng)地講解反匯編與逆向分析技術(shù)的安全類專著,,又是一部深刻揭示C++內(nèi)部工作機(jī)制的程序設(shè)計(jì)類著作。理論與實(shí)踐并重,,理論部分系統(tǒng)地講解了C++的各種語(yǔ)法特性和元素的逆向分析方法和流程,,重在...  立即去當(dāng)當(dāng)網(wǎng)訂購(gòu)

計(jì)算機(jī)也需要運(yùn)算和存儲(chǔ)數(shù)學(xué)中的實(shí)數(shù)。在計(jì)算機(jī)的發(fā)展過(guò)程中,,曾產(chǎn)生過(guò)多種存儲(chǔ)實(shí)數(shù)的方式,,有的現(xiàn)在已經(jīng)很少使用了。不管如何存儲(chǔ),,我們都可以劃分為定點(diǎn)實(shí)數(shù)存儲(chǔ)方式和浮點(diǎn)實(shí)數(shù)存儲(chǔ)方式這兩種,。所謂定點(diǎn)實(shí)數(shù),就是約定整數(shù)位和小數(shù)位的長(zhǎng)度,,比如用4字節(jié)存儲(chǔ)實(shí)數(shù),,我們可以約定兩個(gè)高字節(jié)存放整數(shù)部分,兩個(gè)低字節(jié)存儲(chǔ)小數(shù)部分,。這樣的好處是計(jì)算的效率高,,缺點(diǎn)也顯而易見(jiàn),存儲(chǔ)不靈活,,比如我們想存儲(chǔ)65536.5,由于整數(shù)的表達(dá)范圍超過(guò)了2字節(jié),,用定點(diǎn)實(shí)數(shù)存儲(chǔ)方式就無(wú)法實(shí)現(xiàn)了,。對(duì)應(yīng)地,也有浮點(diǎn)實(shí)數(shù)存儲(chǔ)方式,,道理很簡(jiǎn)單,,就是用一部分二進(jìn)制位存放小數(shù)點(diǎn)的位置信息,我們可以稱之為“指數(shù)域”,,其他的數(shù)據(jù)位用來(lái)存儲(chǔ)沒(méi)有小數(shù)點(diǎn)時(shí)的數(shù)據(jù)和符號(hào),,我們可以稱之為“數(shù)據(jù)域”、“符號(hào)域”,。在訪問(wèn)時(shí)取得指數(shù)域,,與數(shù)據(jù)域運(yùn)算后得到真值,如67.625,,利用浮點(diǎn)實(shí)數(shù)存儲(chǔ)方式,,數(shù)據(jù)域可以記錄為67625,小數(shù)點(diǎn)的位置可以記為10的-3次方,,對(duì)該數(shù)進(jìn)行訪問(wèn)時(shí)計(jì)算一下即可,。浮點(diǎn)實(shí)數(shù)存儲(chǔ)方式的優(yōu)缺點(diǎn)和定點(diǎn)實(shí)數(shù)存儲(chǔ)方式的優(yōu)缺點(diǎn)是相反的。在80286之前,程序員常常為實(shí)數(shù)的計(jì)算傷腦筋,,而后來(lái)推出了浮點(diǎn)協(xié)處理器,,可協(xié)助主處理器分擔(dān)浮點(diǎn)運(yùn)算,程序員計(jì)算實(shí)數(shù)的效率也就提升了,,于是浮點(diǎn)實(shí)數(shù)存儲(chǔ)方式也就普及開(kāi)來(lái),,成為現(xiàn)在主流的實(shí)數(shù)存儲(chǔ)方式。但是,,在一些條件惡劣的嵌入式開(kāi)發(fā)場(chǎng)合,,仍可看到定點(diǎn)實(shí)數(shù)的存儲(chǔ)和使用。

在C/C++中,,使用浮點(diǎn)方式存儲(chǔ)實(shí)數(shù),,用兩種數(shù)據(jù)類型來(lái)保存浮點(diǎn)數(shù):float(單精度)、double(雙精度),。float在內(nèi)存中占4字節(jié)空間,,double在內(nèi)存中占用8字節(jié)空間。由于占用空間大,,double可描述的精度更高,。這兩種數(shù)據(jù)類型在內(nèi)存中同樣以十六進(jìn)制方式進(jìn)行存儲(chǔ),但與整型類型有所不同,。

整型類型是將十進(jìn)制轉(zhuǎn)換成二進(jìn)制保存在內(nèi)存中,,以十六進(jìn)制方式顯示。浮點(diǎn)類型并不是將一個(gè)浮點(diǎn)小數(shù)直接轉(zhuǎn)換成二進(jìn)制數(shù)保存,,而是將浮點(diǎn)小數(shù)轉(zhuǎn)換成的二進(jìn)制碼重新編碼,,再進(jìn)行存儲(chǔ)。C/C++的浮點(diǎn)數(shù)是有符號(hào)的,。

在C/C++中,,將浮點(diǎn)數(shù)強(qiáng)制轉(zhuǎn)換為整數(shù)時(shí),不會(huì)采用數(shù)學(xué)上四舍五入的方式,,而是舍棄掉小數(shù)部分(第4章會(huì)提到的“向0取整”),,不會(huì)進(jìn)位。

浮點(diǎn)數(shù)的操作不會(huì)用到通用寄存器,,而會(huì)使用浮點(diǎn)協(xié)處理器的浮點(diǎn)寄存器,,專門(mén)對(duì)浮點(diǎn)數(shù)進(jìn)行運(yùn)算處理,見(jiàn)2.2.2小節(jié),。MicrosoftVisualC++6.0在使用浮點(diǎn)數(shù)前,,需先對(duì)浮點(diǎn)寄存器進(jìn)行初始化,然后才能正常運(yùn)行,。未初始化浮點(diǎn)寄存器的代碼如代碼清單2-1所示,。

代碼清單2-1 未初始化浮點(diǎn)寄存器
int main(int argc, char* argv[])
{
       // 在未使用到浮點(diǎn)數(shù)情況下,
       // 在Visual C++ 6.0 中輸入小數(shù)會(huì)報(bào)錯(cuò),因沒(méi)有對(duì)浮點(diǎn)寄存器進(jìn)行初始化
       int nInt = 0;
       scanf("%f", &nInt);
}

在代碼清單2-1所示的運(yùn)行程序中輸入小數(shù)將會(huì)導(dǎo)致程序崩潰,,這是由于在浮點(diǎn)寄存器沒(méi)有初始化時(shí)使用浮點(diǎn)操作,,將無(wú)法轉(zhuǎn)換小數(shù)部分。

解決辦法是:在代碼中的任意位置定義一個(gè)浮點(diǎn)類型的變量即可對(duì)浮點(diǎn)寄存器進(jìn)行初始化

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多