计组之数据运算: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標準
總結
以上是生活随笔為你收集整理的计组之数据运算:9、浮点数的表示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入理解C指针之三:指针和函数
- 下一篇: (计算机组成原理)408之外内容补充(非