小數在計算機裏面的存放

一、數學定義:小數,又稱爲實數。通常用十進制表示算法

例如: 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 位)

IEEE 754 考慮到,對浮點數能進行快速的比較和排序,因爲指數部分大小能快速反應出浮點數的大小,因此,在符號位接下來的8位用來表示指數,有效數位的大小反應出浮點數的精度。安排在最後的23位

對於規格化二進制浮點示法而言,有效數位的第1位一定是1而不是0,所以,IEEE 754 規定:實際有效數位中的第1位被省去,於是,有效數位中默計含有1位。

移碼:除了將指數安排在有效數位前面,還不足以快速比較兩個浮點數的大小,例如:

1.0 × 2 -1在計算機中表示爲:0 11111111 00000000000000000000000

這個數至關於整數的 0x7F800000

1.0 × 2 1在計算機中表示爲:0 00000001 00000000000000000000000

這個數至關於整數的 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

二、將以下二進制序列用十進制浮點數表示。

11000000101000000000000000000000

解:

符號位:1 是負數

指數位;10000001 = 129, 這個數要減去移碼值,即:129 – 127 = 2

有效數位:01000000000000000000000 這個數要加上默認1,即得:1.01

整個序列結果爲:- 1.01 × 22 = -101 = -5.0

相關文章
相關標籤/搜索