復(fù)習(xí)MySQL的過程中,看到DECIMAL這個(gè)基本數(shù)據(jù)類型,忽然回想起了以前在學(xué)習(xí)微處理器時(shí)遇到過的定點(diǎn)數(shù)和浮點(diǎn)數(shù)的概念,于是在這里做一下筆記。
在計(jì)算機(jī)出現(xiàn)之初,實(shí)數(shù)的存儲成了業(yè)界爭論的議題。而一開始,定點(diǎn)數(shù)的存儲形式率先被應(yīng)用于實(shí)數(shù)的存儲。
什么是定點(diǎn)數(shù)? 如00.11和99.65這樣固定整數(shù)和小數(shù)位數(shù)的存儲形式,就是定點(diǎn)數(shù)存儲。
但是后來人們發(fā)現(xiàn)了定點(diǎn)數(shù)的缺點(diǎn),其中很明顯的缺點(diǎn)是浪費(fèi)存儲空間。
于是,浮點(diǎn)數(shù)存儲開始出現(xiàn)了,并且應(yīng)用到今天的主流編程語言之中。
浮點(diǎn),顧名思義就是小數(shù)點(diǎn)是浮動的,也就是說整數(shù)和小數(shù)部分是變化的。那怎么才能實(shí)現(xiàn)這種方式呢?
沒錯(cuò),就是“科學(xué)計(jì)數(shù)法”;
如二進(jìn)制數(shù)111.0011,可以記作1.110011*2^2,很明顯,這里包含三部分: (1)尾數(shù) (2)階碼 (3)符號位(描述階碼的正負(fù))
而按照IEEE的浮點(diǎn)型標(biāo)準(zhǔn),目前浮點(diǎn)型有float(單精度32位)和double(雙精度64位)兩種形式。
對于float(32bits): (1)尾數(shù)(23位),因?yàn)檎麛?shù)位一定為1,所以省略,所以實(shí)際上可以表示24位有效數(shù)字; (2)階碼(8位); (3)符號位(1位);
對于double(64bits): (1)尾數(shù)(52位),實(shí)為53位有效數(shù)字; (2)階碼(11位); (3)符號位(1位);
好了,原本要將MYSQL的定點(diǎn)數(shù)(DECIMAL)的,卻詳細(xì)介紹了浮點(diǎn)數(shù),但是浮點(diǎn)數(shù)理解了,定點(diǎn)數(shù)就不在話下了。
新聞熱點(diǎn)
疑難解答