一的補數(1's Complement)
1補數系統是指兩數之和為1,則此兩數互為1的補數,亦即0和1互為1的補數。換言之,欲求得二進位數的1補數,只需將0變成1,1變成0即可,減法會用到所謂的一補數,作法:範例:計算4 的1補數。
首先先將 4 以二進位表示:0100。
然後將每個 1 寫成 0、每個 0 寫成 1(其實就是 NOT 運算),就會得到 1011。
這就是一補數的作法。
所以計算 4−3 時,其實就是用 4 加上 3 的補數,也就是 0100+1100 得到 0001(在一補數運算時,因為只有四個位元,所以 10000 溢位變成 0001),換成十進位的 1。
以下列出 ±7 的表示法:
原本的數 正數 負數
0 0000 1111
1 0001 1110
2 0010 1101
3 0011 1100
4 0100 1011
5 0101 1010
6 0110 1001
7 0111 1000
然而,一補數系統中,0 居然可以被表示成正零(+0)和負零(−0),這造成了一些問題。
二的補數(2's Complement)
二補數系統的求法是先取該數的1補數,再加1即可,作法:範例:計算 3 的二補數。
首先先將 3 以二進位表示:0011。
然後先把每個 1 寫成 0、每個 0 寫成 1,得到 1100。(其實就是先算一次一補數)
之後再加上一個 1,得到 1101。
這就是二補數的作法。
二補數常用來表示有號數,第一個位元用來記錄正負號(正號表示成 0、負號表示成 1)。以下列出 ±3 的表示法
原本的數 二補數表示法
3(0011) 0011
2(0010) 0010
1(0001) 0001
0(0000) 0000
-1(1110) 1111
-2(1101) 1110
-3(1100) 1101
以2補數法求兩數相減的步驟如下:
- 取減數的2補數。
- 和被減數相加。
- 相加後會產生有無溢位問題,再分別處理:
- 若沒有溢位,表示其結果為負值,再取此結果的2補數,才能得到正確的答案。
- 若發生溢位,表示其結果為正值,則將此溢位捨棄,即得正確的答案。
No comments:
Post a Comment