電腦內部資料是以0和1來儲存的,這種只有0和1兩種狀態的系統,成為二進位系統;本文將就二進位系統探討其轉換、四則及邏輯運算。
十進位制是一種滿10進位,基底為十的數字系統,由0、1、2、3、4、5、6、7、8、9等十個數字組成,為日常生活中普遍使用的數制。例127810,其基底通常被省略,亦即1278。
二進位制是一種滿2進位,基底為二的數字系統,由0和1兩個數字所組成,為電腦最基本的數字系統。通常表示時會在數字前加一"B"以便於識別,例B1101
或1102。
八進位制為逢8進位的數字系統,由0,1,2,3,4,5,6,7所組成,通常於數字前加"&"或"&O"字母符號識別,例如&O467
或4568。。
十六進位制為逢16進位的數字系統,由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F所組成,其中A表十進位的10,B表 11,依次類推,其識別方式是於數前加&H
,例如&H123C
或123C16。
將整數與小數部分分開處理
例如:
1012=1 x 20 + 0 x 21 + 1 x 22 = 510
0.112=1 x 2-1 + 0 x 2-2 = 0.7510
使用短除法,從底下往上依序取餘數
先將x進位數換成十進位數,再轉換成y進位數
請問D02A16+548710等於多少?
(1) 1100 0101 1001 10012
(2) 1626318
(3) 5878716
(4) F59916
Tips: 將所有數字都換成十進位
Ans: (2)
補數(Complement)
是指兩數字加起來等於某數時,則二數互為某數的補數。
例如3的10補數為7,7的10補數為3。
在電腦基礎運作的二進制運算中,為了達成減法、除法運算,運用了補數。
減法就是加上某數的補數,而除法就是連續加上加上某數的補數。
在一補數系統中,-3的表示方法是
1100
運算方法:
被減數
轉成一的補數LSD: Least Significant Digit
)即得到正確結果例如:4 - 3 = 01002 + 11002 = (1)00002 = 00012 = 1
然而,在一補數系統中,0 居然可以被同時表示成正零(+0)和負零(−0),這造成了一些系統問題。
於是就發明了2的補數系統來解決。
在二補數系統中,負整數表示方法是:
被減數
以一補數
表示,把每個 1 寫成 0、每個 0 寫成 1,得到 1100二補數常用來表示有號數,第一個位元用來記錄正負號
正數和0的二補數就是該數字本身;負數的二補數則是將其對應正數按位元取反再加1。
運算方法:
被減數
轉成二的補數例如 4 - 3 = 01002 + 11012 = (1)00012 = 00012 = 1
https://hackmd.io/@sysprog/binary-representation
電腦科學概論