一、數學定義:小數,又稱爲實數。通常用十進制表示算法
例如: 3.14159265ide
二、科學計算法:設計
數學中的科學計算法許多種表示法orm
3.14159265 = 0.314159265 × 101排序
三、計算機中浮點數的表示:ci
在計算機中的使用科學計數法是一種「規格化計數法」。數學
3.1規格化計數法:it
用科學計數法表示實數時,若是最左邊的第一個數字不是0,則被稱爲「規格化計數法」io
例如:class
0.1 × 10-2
1.0 × 10-3
2、計算機表示方法:
一、 IEEE 754 標準:
IEEE 754 標準成立於1985年,80年代起全部的計算機系統均支持IEEE 754
IEEE 754 對浮點數在計算機表示方法有三個主要的規定:
對於單精度(single precision):單精度浮點數位長:32位
(1) IEEE 754 標準規定:第1位爲符號位,1 表明負,0表明正
(2) 接下來用8位來表示指數部分。
(3) 接下來的23位用來表示有效數位
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
- --------------- ---------------------------------------------
S 指數(8位) 有效數位 (23 位)
對於規格化二進制浮點示法而言,有效數位的第1位一定是1而不是0,所以,IEEE 754 規定:實際有效數位中的第1位被省去,於是,有效數位中默計含有1位。
移碼:除了將指數安排在有效數位前面,還不足以快速比較兩個浮點數的大小,例如:
1.0 × 2
這個數至關於整數的 0x7F800000
1.0 × 2
這個數至關於整數的 0x00800000
若是用整數比較指令,比較兩個數,1.0 × 2 -1 居然比 1.0 × 2 1 還大!
爲了解決這個問題,IEEE 754 設計了一個方案:將指數加上一個常數 127
這個常數 127 被稱爲「移碼」(biased notation)
咱們再來看一看:
1.0 × 2 -1 將指數: -1 + 127 = 126 後,得出如下的二進制數:
0 01111110 00000000000000000000 也就是: 0x3F000000
1.0 × 2 1 將指數:1 + 127 = 128 後,得出如下的二進制數:
0 10000000 00000000000000000000 也就是:0x40000000
這樣的話,就能夠得出正確結果了。
對於雙精度(double precision)浮點數來講:位長64 位
(1)IEEE 754 標準規定:第1位爲符號位,1 表明負,0表明正。
(2)接下來用11位來表示指數部分。
(3)接下來的52位用來表示有效數位。
★ 雙精度浮點數用52位來表示有效數位,11位表示指數位,這樣提升浮點數的精度,也還提升了浮點數的取值範圍。
★ 雙精度的移碼爲 1023
例子:
一、將 -0.625 轉化爲計算機中的二進制數浮點數
解:
-0.625 = -5/8 = -5/23 = -101 × 2-3 = -1.01 × 2-1
符號位:1
指數位:-1 + 127 = 126
有效數位:1.01(在機器中要相應去掉默認位)
因此,在機器表示的二進制序列爲:1 01111110 0100000000000000000000
至關於整數:0xBF200000
二、將以下二進制序列用十進制浮點數表示。
110000001010000000000000
解:
符號位:1 是負數
指數位;10000001 = 129, 這個數要減去移碼值,即:129 – 127 = 2
有效數位:01000000000000000000000 這個數要加上默認1,即得:1.01
整個序列結果爲:- 1.01 × 22 = -101 = -5.0