跳轉到內容

資料表示基礎:二進位制小數

來自 Wikibooks,開放世界中的開放書籍

試卷 2 - ⇑ 資料表示基礎 ⇑

← 二進位制補碼 二進位制小數 舍入誤差 →


二進位制小數 - 使用定點表示法

[編輯 | 編輯原始碼]

到目前為止,我們只關注了整數,我們需要了解計算機如何表示分數。

來自規範:計算原理簡介

瞭解帶小數部分的數字如何以

  • 二進位制定點形式表示,使用給定位數
  • 二進位制浮點形式表示,使用給定位數。

能夠為每種表示形式進行轉換,從

  • 給定位數的十進位制轉換為二進位制
  • 給定位數的二進位制轉換為十進位制。

你應該在小學學過十進位制小數是如何工作的

10 1
1 2 . 7 5

如你所見,列標題已擴充套件到 。我們可以在二進位制中做同樣的事情,列標題為 ,依此類推。因此,在二進位制點後有 4 位的 8 位二進位制表示的數字 12.75 為 8 + 4 + 0.5 + 0.25

8 4 2 1
1 1 0 0 . 1 1 0 0

請注意,對於小數點後相同位數,**二進位制小數提供的精度較低**。它只能取4個不同的值,而十進位制數可以用兩位數表示100個不同的值。您很快就會看到這可能會導致什麼問題。

示例:使用**定點**表示法將十進位制數轉換為二進位制小數

我們將使用下面的表格將數字6.125轉換為二進位制小數

8 4 2 1
0 1 1 0 . 0 0 1 0

這看起來很簡單,因為6.125 = 4 + 2 + 0.125,但這個更有趣的數字呢:6.4

8 4 2 1
0 1 1 0 . 0 1 1 0

但這看起來不對?!這個數字不正確,因為它只達到4 + 2 + 0.25 + 0.125 = 6.375,我們需要更多位來表示二進位制小數位。但是,計算機可能會限制您可以使用的位數,因此我們將使用最接近目標數字的數字。您可能會對此感到有點惱火,但不用擔心,每次嘗試用十進位制小數表示時,您都會做出這種折衷,例如0.33333333。

所以您可能會問,如果計算機在處理分數方面如此困難,它如何進行復雜的數學運算。我們到目前為止看到的答案只使用了1個位元組,計算機可以使用比這多得多的空間。它們還可以透過兩種方式操作給定的位數

  • 增加位數以增加數字範圍
  • 增加小數點後的位數以提高精度

在實踐中,它們還會使用一些巧妙的技術,例如**浮點數**(見下文)。

練習:從十進位制轉換為二進位制小數

現在自己嘗試一些問題,看看您能做到什麼程度。請記住,如果小數位沒有足夠的位數,請寫下最接近目標數字的數字。在每種情況下,使用8位二進位制數,小數點後有4位

7.5

答案

0111.1000

4.5625

答案

0100.1001

1.6

答案

0001.1010(這是我們能得到的最近值)

3.3333333

答案

0011.0101(這是我們能得到的最近值)

嘗試將這些二進位制小數轉換為十進位制

0111.0100

答案

7.25

1011.1001

答案

11.5625(注意,我們將此視為正數,有些人可能已經瞭解了**二進位制補碼**,如果您以前從未聽說過,請不要擔心,我們很快就會講到)
要將其解釋為二進位制補碼數,讓我們將其取反:0100.0111 = 4 + 0.25 + 0.125 + 0.0625 = -4.4375

如果我想增加儲存在定點二進位制數中的數字範圍,我應該怎麼做?

答案

增加小數點前的位數

如果我想提高儲存在定點二進位制數中的數字精度,我應該怎麼做?

答案

增加小數點後的位數

華夏公益教科書