1. 浮點表示
其中b表示基底,e表示指數,s表示尾數,注意在s的表示過程中,有個隱藏1.同時還有個符號位
從下面這個圖可以看出,向上溢出和向下溢出的概念,overflow表示的是數的絕對值超過了最大的表示范圍;向下溢出(underflow)表示的是數的絕對值小于最小能表示的范圍(除0以外)
2. IEEE浮點數格式
2.1 hp/sp/dp 表示
主要以單精度浮點數為例,1bit符號位,8bit指數位,23bit尾數位。其中指數位表示的指數等于true_exp +bias。23bit尾數位,還需要加上一個隱藏位才是真正的尾數表示。
2.2 特殊數表示
包括0/無窮/subnormal/NaN等。其中可以注意一下尾數范圍的表示方法。
3. 基本的浮點運算
3.1 浮點加法
小階向大階看齊,指數對齊之后然后進行加減運算。大階不向小階看齊的原因是對其運算之后,尾數還得進行移位,指數還得運算。加運算之后,尾數的結果范圍是(1, 4), 可能產生進位,指數需要加1;減運算之后,尾數的結果是(0,2), 可能非常接近于0,尾數需要左移動,指數減去尾數前導零。
3.2 浮點乘法
如果兩個數都是normal的數,那么s1s2的范圍是(1, 4), 歸一化之后,指數最多只需要加1,但是如果支持subnormal的數,那么s1s2的范圍就是(0, 4),尾數可能有許多前導0,這樣尾數就需要左移。
3.3 浮點除法
浮點除法的難點和浮點乘法一樣,當兩個數都是normal的情況下,s1/s2的結果仍然是normal的,指數相減之后即可處理。但是如果存在subnormal的情況,我們一般會先進行尾數移位,將尾數的范圍限制在[1,2)之間,然后進行處理。
3.4 乘累加
乘累加在乘法過程中是不會進行舍入的,也即乘法過程不允許有精度損失
3.5 開根號
先將指數變為偶數,然后再進行開根。
4. 舍入模式
總共有5種舍入模式,四舍五入,向偶數舍入;四舍五入,向奇數舍入