電腦中的補數運算

一的補數(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

半導體產業簡介

半導體產業簡介: 所謂微電子產業,就是生產 積體電路 ( 大陸稱為 集成電路 ) 的產業 。 積體電路 (Integrated Circuit ,簡稱 IC) 在電子學中是一種把電路(包括半導體裝置、元件)小型化的方式、並製造在半導體晶圓表面上。所以半導體只是製作「 ...