計組之資料運算:9、浮點數的表示
9、浮點數的表示
思維導圖
定點數存在的問題:(浮點數產生的原因)
當我們要儲存一個數值時,需要考慮到數值的大小問題;例如,當儲存一個156時用char型即可,儲存8500時,用short型即可;但是當一個數值非常非常的大時,要怎麼進行儲存呢?例如我們要儲存2億億億億這麼大一個數,採用定點數的方式儲存就會產生問題。因此產生了浮點數。(浮點數的表示類似與科學計數法)
浮點數的表示格式
浮點數與科學計數法的比較
先來看一下十進位制的科學計數法
+3.026*10^11是十進位制的科學計數法,他可以拆分成5部分:
1、數值的符號:即第一個正號,又稱數符
2、數值的大小:3.026,又稱尾數
3、階碼的數值:11
4、階碼的底數:10(對於科學計數法為10,對於浮點數來說就為2,一般沒有特別說明是預設的,所以在儲存表示中不需要儲存)
5、階數的符號:即11前面隱含的正號,又稱階符
所以,在對科學計數法進行儲存時,需要儲存的有四部分:階符、階碼的數值、數符、尾數
類比與科學計數法,浮點數的儲存與其不同之處就在於階碼的底數,而在浮點數儲存中,預設為2^i,無特別說明為2
浮點數的格式
階碼:反映了浮點數的表示範圍及小數點的實際位置
尾數的數值部分位數:反映了浮點數的精度
浮點數與真值的轉化
存在的問題
對於上圖中求真值b的過程中,無法用1B的儲存空間進行儲存(需要9位),這樣會捨棄最低位的1,結果會造成精度的丟失。所以,我們如何利用盡可能小的儲存空間儲存儘可能大的數值呢?因此產生了規格化的概念。
規格化
科學計數法的規格化
我們都知道,科學計數法要求小數點在數值的第一個有效位的後面;例如,我們表示235000,會寫成2.35x105而不會寫成235x103;這樣的規定就是科學計數法的規格化
浮點數的規格化方法
類比與科學計數法的規格化,規定尾數的最高位數值必須是一個有效值。
eg:
對於上文提到的求b的真值的過程,我們可以通過左規操作使b規格化,結果是可以用1B的儲存空間進行儲存(8位,上文中未左規9位)
浮點數規格化特點
倆個規格化的浮點數的加減操作:
階數:補碼,位數:原碼
a:00,010;00,0110
b:00,011;00,0101
1、求a,b真值
a:階數:2,尾數6,真值:6x22
b:階數:3,尾數5,真值:5x23
2、求a+b的值
1、求階差:011-010=001,階差為1
2、補階差:將階數小的與階數大的對齊,並進行移位保證a的數值不變
a:00,011;00,0011
3、尾數運算:0011+0101=1000
4、得出結果:a+b:00,011;00,1000
5、規格化:此結果以規格化;若非規格化則需要通過左規與右規進行規格化
待解決問題:
階碼、尾數用什麼碼合適?用多少位合適?如何定義一個標準可以進行不同計算機浮點數的通訊?見下篇部落格:IEEE754標準
相關文章
- 浮點數在計算機底層的表示及運算計算機
- 計算機組成與體系結構-浮點數表示計算機
- 計算機組成與體系結構-數值表示範圍-浮點數計算計算機
- 計算機中的浮點運算計算機
- 計算機組成原理浮點數加減計算機
- 深入理解浮點數的運算
- Java浮點數計算Java
- 圖解計算機中的數值範圍和浮點運算圖解計算機
- JavaScript解決浮點數算數運算精度問題JavaScript
- python中精確的浮點數運算Python
- 浮點數的加減乘除運算細節
- 深入理解浮點數的表示
- PHP浮點數的精確計算BCMathPHP
- 一個浮點數計算的問題
- Python做浮點數(float)運算要小心Python
- 浮點數表示及其實現.
- 【轉】JS浮點數運算Bug的解決辦法JS
- 為什麼php的浮點數運算不準確PHP
- js中浮點數計算常用方法JS
- js精確計算浮點數相加JS
- 浮點數線上轉hex計算工具
- 浮點運算簡介 (轉)
- 浮點數的二進位制表示
- 全面總結 JS 中浮點數運算問題JS
- JavaScript 浮點數及運算精度調整總結JavaScript
- php 處理 浮點數 精度運算 數字處理等PHP
- js處理浮點數計算誤差JS
- javascript浮點數精確計算程式碼JavaScript
- 計算機資料的表示計算機
- 計算機組成原理白學了,再次回顧浮點數加減計算機
- 計算機組成原理--浮點數-原碼補碼錶示範圍計算機
- Python浮點數(小數)運算誤差的原因和解決辦法Python
- JavaScript浮點數加減乘除精確計算JavaScript
- javascript浮點數計算精度問題介紹JavaScript
- 浮點數之間的比較,基本運算這些究竟是怎麼實現的
- 匹配浮點數的正規表示式程式碼
- FLOAT:浮點數值資料的大致數值資料型別資料型別
- 有關 PHP 和 js 浮點運算的坑PHPJS