[Computer Architecture Cheat sheat] — Numerical system

Leon .
6 min readApr 4, 2021

--

  1. Unsigned integer
  2. Signed integer
  3. Float — IEEE754
  4. Number operation and its implement

Number in computer

數字(number)分成整數(integer)以及浮點數(Float)分別介紹。

Integer

Unsigned integer

若是要表達 Unsigned integer,我們可以用所有的硬體資源來表示
然而,即使是所有的硬體也是以有限的電路來儲存一個數值。
因此數字能夠表達的範圍就會有所限制。

e.g :

3-bit unsigned integer

Unsigned integer 在長度 n 所能表達的範圍為

[0,2^n-1]

Signed integer

不同於Unsigned integer,我們在表達Signed integer時,必須犧牲一些資源來表示 負數(negative number) 。

共有3種可以表達負數的方法 :

  1. Sign & magnitude
  2. 1’s complement
  3. 2’s complement

Sign & magnitude

犧牲第一個bit用來表達正、負,稱為 Signed bit。

有三個缺點 :

  • 此種表示法會出現+0、-0,容易出錯
  • 無法預先知道運算結果,所以執行運算時需額外步驟來設定Sign bit
  • 犧牲1個bit來表示sign

Example

長度為3的bit string,使用 Sign & magnitude 所能表達的範圍 ?

由左圖觀察,我們可以得到 :

-3 ~+3

推廣到長度n ,犧牲第一個bit

所以為 ± n-1 長度為真正能表達數字的長度,需要再扣掉 0 。

因此 ± 2^(n-1)-1 為其表達範圍

Note.

Sign & magnitude 在長度 n 所能表達的範圍為 :

- 2^(n-1) -1 ~ 2^(n-1) -1

1’s complement

其負數的表達方式為 各個bit取其補數(complement)。

補數的取法 :
將其 binary number 的 1、0互換。

有兩個缺點 :

  • 此種表示法也會出現+0、-0,容易出錯
  • 有時需要做 "端位修正"

Example

長度為3的bit string,使用 1’s complement 所能表達的範圍 ?

範圍和Sign&magnitude一樣

Note.

1’s complement在長度 n 所能表達的範圍為 :

- 2^(n-1) -1 ~ 2^(n-1) -1

2’s complement

為現今的電腦所使用的負數表達法。

其取法有三種方式 :

  1. 1’s complement + 1

2. 特殊技巧 (快速簡單)

3. 公式

若負數的表達式為 Xn-1 Xn-2 … X1 X0

則其2’s complement 為 :

也就是 (-1)*MSB + (所有有1的 bits*其對應power之和)

Example

2’s complement 1010 轉換成 decimal

→ -2³+2¹ = -6 …#

最後我們也整理出2's complement所能表達的範圍 :

以3-bits 做例子:

Note.

2 ’s complement在長度 n 所能表達的範圍為 :

- 2^(n-1) ~ 2^(n-1) -1 [正數的一個位置用來表達 0]

Float

Float number 為實數(real number , R) 在電腦的表示方法 。

Float number 在電腦裡是使用 IEEE 754這個協定所定義出來 , 分成 3個欄位

定義如下 :

  • Sign
  • Exponential
  • Fraction (mantissa)

而且依照float以及double,有不同的欄位長度 :

Single : sign(1)、exp(8)、mantissa(23)

Double : sign(1)、exp(11)、mantissa(52)

以下討論都依Single單精準度為準。

Bias notation

IEEE 754的Exponent欄位是使用 "Bias notation",
目的是用來快速比較用來快速比較指數。

其作法為將所有能表達的數全部先扣掉bias,bias=2^(n-1)-1
下表中使用8-bit,所以bias=127。

Example

IEEE 754 Range

IEEE 754 捨去了一些bits來表示一些特殊目的的符號,eg : NaN,0,±∞
然後剩餘的位置可拿來表示"非正規化數" (denormalized number)

以下Table整理了其編碼情形 :

再整理了一樹狀分類 :

並且羅列幾個重要的數字A~H :

A : 最大正規化數

B : 最小正規化數

C : 最大非正規化數

D : 最小非正規化數

E : 最大正規化數

F : 最小正規化數

G : 最大非正規化數

H : 最小非正規化數

--

--

Leon .
Leon .

Written by Leon .

Record my life experience and knowledge , keep enthiusastic attitude to explore the world , that’s what I live for.

No responses yet