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