資料表示基礎:二進位制小數
到目前為止,我們只關注了整數,我們需要了解計算機如何表示分數。
|
來自規範:計算原理簡介 瞭解帶小數部分的數字如何以
能夠為每種表示形式進行轉換,從
|
你應該在小學學過十進位制小數是如何工作的
| 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轉換為二進位制小數
這看起來很簡單,因為6.125 = 4 + 2 + 0.125,但這個更有趣的數字呢:6.4
但這看起來不對?!這個數字不正確,因為它只達到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(注意,我們將此視為正數,有些人可能已經瞭解了**二進位制補碼**,如果您以前從未聽說過,請不要擔心,我們很快就會講到) 如果我想增加儲存在定點二進位制數中的數字範圍,我應該怎麼做? 答案 增加小數點前的位數 如果我想提高儲存在定點二進位制數中的數字精度,我應該怎麼做? 答案 增加小數點後的位數 |