--- 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
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.