--- title: 數字系統 image: description: --- # 數字系統 :::info 電腦內部資料是以0和1來儲存的,這種只有0和1兩種狀態的系統,成為二進位系統;本文將就二進位系統探討其轉換、四則及邏輯運算。 ::: ## 進制 ### 十進位制(Decimal) 十進位制是一種滿10進位,基底為十的數字系統,由0、1、2、3、4、5、6、7、8、9等十個數字組成,為日常生活中普遍使用的數制。例127810,其基底通常被省略,亦即1278。 ### 二進位制(Binary) 二進位制是一種滿2進位,基底為二的數字系統,由0和1兩個數字所組成,為電腦最基本的數字系統。通常表示時會在數字前加一"B"以便於識別,例`B1101`或110~2~。 ### 八進位制(Octal) 八進位制為逢8進位的數字系統,由0,1,2,3,4,5,6,7所組成,通常於數字前加"&"或"&O"字母符號識別,例如`&O467`或456~8~。。 ### 十六進位制(Hexadecimal) 十六進位制為逢16進位的數字系統,由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F所組成,其中A表十進位的10,B表 11,依次類推,其識別方式是於數前加`&H`,例如`&H123C`或123C~16~。 ## 數字系統的轉換 ### 非十進位轉成十進位 將整數與小數部分分開處理 - 整數是以n進位數值,乘上相對的n正次方值 - 小數是以n進位數值,乘上相對的n負次方值 例如: 101~2~=1 x 2^0^ + 0 x 2^1^ + 1 x 2^2^ = 5~10~ 0.11~2~=1 x 2^-1^ + 0 x 2^-2^ = 0.75~10~ ### 十進位數轉換成非十進位 使用短除法,從底下往上依序取餘數 ### x進位數轉換成y進位數 先將x進位數換成**十進位數**,再轉換成y進位數 ### 隨堂練習 請問D02A~16~+5487~10~等於多少? (1) 1100 0101 1001 1001~2~ (2) 162631~8~ (3) 58787~16~ (4) F599~16~ > Tips: 將所有數字都換成十進位 Ans: (2) ## <a id="complement"> 補數系統</a> `補數(Complement)`是指兩數字加起來等於某數時,則二數互為某數的補數。 例如3的10補數為7,7的10補數為3。 在電腦基礎運作的二進制運算中,為了達成減法、除法運算,運用了補數。 減法就是加上某數的補數,而除法就是連續加上加上某數的補數。 ### 一補數(1's complement) 在一補數系統中,-3的表示方法是 1. 首先先將 3 以二進位表示:0011 2. 先算出一補數,把每個 1 寫成 0、每個 0 寫成 1,得到 `1100` ### 使用一補數進行減法運算 運算方法: 1. 將`被減數`轉成一的補數 2. 兩數相加,若有溢位,將該位元加回最小位數(`LSD: Least Significant Digit`)即得到正確結果 例如:4 - 3 = 0100~2~ + 1100~2~ = (1)0000~2~ = 0001~2~ = 1 然而,在一補數系統中,0 居然可以被同時表示成正零(+0)和負零(−0),這造成了一些系統問題。 於是就發明了2的補數系統來解決。 ### 二補數(2's complement) 在二補數系統中,負整數表示方法是: 1. 首先以二進位表示 2. 將`被減數`以`一補數`表示,把每個 1 寫成 0、每個 0 寫成 1,得到 1100 3. 將最小位數再加上一個1 二補數常用來表示有號數,第一個位元用來記錄正負號 - 正號表示成 0 - 負號表示成 1 正數和0的二補數就是該數字本身;負數的二補數則是將其對應正數按位元取反再加1。 #### 使用二補數進行減法運算 運算方法: 1. 將`被減數`轉成二的補數 2. 兩數相加,若有溢位,捨棄最高位元,即可得到答案 例如 4 - 3 = 0100~2~ + 1101~2~ = (1)0001~2~ = 0001~2~ = 1 ## 進階閱讀 https://hackmd.io/@sysprog/binary-representation ###### tags: `電腦科學概論`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up