導航:首頁 > 源碼編譯 > 利用加法器實現源碼轉化補碼

利用加法器實現源碼轉化補碼

發布時間:2022-05-01 12:51:15

『壹』 原碼,補碼,反碼的應用

計算機中,只有補碼,並沒有原碼和反碼。

藉助於補碼,負數和減法,都可以轉化成加法來進行運算。

那麼,計算機的硬體,就可以簡化了。

因此,在計算機中,只有加法器,並沒有減法器。

原碼和反碼,都沒有什麼用,也可以說,根本就沒有用!

------------------------

補碼是怎麼回事?這得從「補數」談起。

計算機所能計算的位數,是固定的,如八位機、16 位。。。

位數限定之後,就可以用「補數」代替負數,用加法實現減法運算。

限定兩位十進制,-1,就可以用 +99 代替。

例如:

25 - 1 = 24

25 + 99 = (一百) 24

舍棄進位,只取兩位,這兩種演算法,功能就完全相同。

99,就是-1 的補數。計算公式:補數 = 一百+負數。

一百,是用兩位十進制數,循環計數的周期,10^2。

這個周期,在計算機專業,又稱為「模」。

-------------------------

計算機用二進制,補數,就改稱為:補碼。

八位二進制:0000 0000 ~ 1111 1111 (十進制 255)。

循環計數的周期,是:2^8 = 256。

求負數補碼的計算公式,也是: 周期 + 負數。

-1 補碼就是:256 + (-1) = 255 = 1111 1111(二進制)。

用不存在的「原碼反碼取反加一」來求,也是這個結果。

正數,不用轉換,直接參加運算。

也可以說:正數自身就是補碼。

-------------------------

舉例說明,如: 5 - 7 = -2。

用補碼計算的過程如下:

5 的補碼=0000 0101

-7的補碼=1111 1001

--相加-------------

(1) 1111 1110 = -2 的補碼

舍棄進位,只保留八位,這就用加法,實現了 5-7。

『貳』 原碼,反碼,補碼怎麼解釋

正負數,在計算機中,只是用【補碼】來存儲。

而原碼和反碼,在計算機中,並不存在。

下面按照八位二進制來說明補碼的意義。

十進制數 0,存放形式,就是二進制 0000 0000。

十進制數 +1,就加上 1,二進制是 0000 0001。

十進制數 +2,就再加 1,二進制是 0000 0010。

。。。

十進制數 +127,加 1加 1...,就加到了 0111 1111。

+127,這就是最大數值。

----------

負數怎麼辦?你就從 0,依次遞減吧。

十進制數 0,以二進制 0000 0000 存放。

十進制數 -1,就減去 1,得 1111 1111 = 255(十進制)。

十進制數 -2,就再減 1,得 1111 1110 = 254。

十進制數 -3,就再減 1,得 1111 1101 = 253。

。。。

十進制數 -128,減 1減 1...,得 1000 0000 = 128。

不要再減了,這就是最小值了。

(你再繼續減,就是 0111 1111,這就是+127 了。)

因此,最小數值就是-128。

----------

總結:

零和正數:直接用二進制存放。

負數:存放形式是【256+這個負數】。

這套存放格式,就是所謂的【補碼】。

求【補碼】,就是這么簡單。

完全不用繞到「原碼反碼符號位」那麼遠。

可以用十進制來計算。如果需要二進制,你就再轉換一下。

用這個方法,不涉及原碼反碼符號位,就少了不少麻煩事。

----------

為什麼負數用補碼存儲?

利用補碼,可以把減法運算,轉換成加法。

(所以,在計算機中,有一個加法器,就夠用了。)

例如,6-2 = 4,在計算機中,用補碼代替數字,運算如下:

6 的補碼是0000 0110

-2 的補碼是1111 1110

--相加-------------

得:(1)0000 0100 (= 4 的補碼)

(括弧中的 1,是進位,舍棄不要了。)

注意:

如果運算結果超出了-128~+127 的范圍,結果將是錯的。

這種現象稱為「溢出」。

再注意一下:進位,並不等於溢出。

---------

因為補碼的這個特性,所以,在計算機中,只是使用補碼存放數據。

而原碼反碼,在計算機中,都是不存在的。

所以,大家,完全不必在原碼反碼上浪費時間精力。

『叄』 一個數的原碼,反碼,補碼

在計算機中,並不存在原碼和反碼。

在計算機中,只用補碼表示正負數。

使用補碼的意義:可用加法,代替減法運算,從而簡化計算機硬體。

------

理解補碼,要先從補數開始。

時針轉一圈,周期是 12 小時。

倒撥 3 小時,就可以用正撥 9 小時代替。

9 就是-3 的補數。9 = 12-3。

同理,分針倒撥 X 分,也可以用正撥「60-X」代替。

60 是分針的周期

三角函數的周期是 2π。

那麼,-π/2 和 +3π/2 處的函數值,必定是相同的。

所以,這正負兩個角度,也是可以互相替換的。

------

對於兩位十進制 0~99,周期就是一百。

這時,減一,你就可以用 +99 代替。

25 - 1 = 24

25 + 99 = (1) 24

結果取兩位,舍棄進位。這兩種演算法,功能就是相同的。

99,就稱為-1 的補數。

98,就是-2 的補數。

。。。

其它補數,你自己都會求的。

利用補數,就可以用加法,代替減法運算。

補數怎麼求?

負數的補數 = 周期 + 該負數。

正數,不需要求補數。也可以說,本身就是補數。

------

計算機使用二進制,補數,就改稱:補碼。

八位二進制,共有 256 個數字。周期就是 256。

負數的補碼 = 256+該負數。

16位二進制,共有 2^16 個數字。周期就是 65536。

負數的補碼 = 65536+ 該負數。

正數,不需要做變換。或者說,正數本身就是補碼。

那麼,在八位二進制時:

-1 的補碼是:256-1 = 255 = 1111 1111(二進制)。

-2 的補碼是:254 = 1111 1110。

-3 的補碼是:253 = 1111 1101。

。。。

-128 補碼:128 = 1000 0000。

------

補碼的應用如: 7-3 = 4。

用補碼的計算過程如下:

7 的補碼=0000 0111

-3的補碼=1111 1101

--相加-------------

得:(1)0000 0100= 4 的補碼

舍棄進位,只保留八位,結果肯定正確。

------

有了補碼,計算機,僅需配置一個加法器即可。

而原碼和反碼,並沒有這種能力。

所以,在計算機中,並沒有原碼和反碼。

原碼和反碼,根本不存在。

它們都是多少呢?就不必關心了吧。

『肆』 計算機原碼反碼補碼怎麼算

計算機原碼反碼補碼計算方法:

1、原碼

原碼就是符號位加上真值的絕對值,即用第一位表示符號,其餘位表示值。比如如果是8位二進制:

[+1]原 = 0000 0001

[-1]原 = 1000 0001

第一位是符號位. 因為第一位是符號位, 所以8位二進制數的取值范圍就是:[1111 1111 , 0111 1111]

即[-127 , 127]

原碼是人腦最容易理解和計算的表示方式。

2、反碼

反碼的表示方法是:正數的反碼是其本身。負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反。

[+1] = [00000001]原 = [00000001]反

[-1] = [10000001]原 = [11111110]反

可見如果一個反碼表示的是負數,人腦無法直觀地看出來它的數值。通常要將其轉換成原碼再計算。

3、補碼

補碼的表示方法是:正數的補碼就是其本身。負數的補碼是在其原碼的基礎上,符號位不變,其餘各位取反,最後+1。(即在反碼的基礎上+1)。

[+1] = [00000001]原 = [00000001]反 = [00000001]補

[-1] = [10000001]原 = [11111110]反 = [11111111]補

對於負數,補碼表示方式也是人腦無法直觀看出其數值的。通常也需要轉換成原碼在計算其數值。

(4)利用加法器實現源碼轉化補碼擴展閱讀:

原碼,反碼和補碼是完全不同的。既然原碼才是被人腦直接識別並用於計算表示方式,為何還會有反碼和補碼呢?

首先,因為人腦可以知道第一位是符號位,在計算的時候我們會根據符號位,選擇對真值區域的加減。但是對於計算機,加減乘數已經是最基礎的運算,要設計的盡量簡單。計算機辨別"符號位"顯然會讓計算機的基礎電路設計變得十分復雜。於是人們想出了將符號位也參與運算的方法。我們知道,根據運演算法則減去一個正數等於加上一個負數,即: 1-1 = 1 + (-1) = 0 , 所以機器可以只有加法而沒有減法,這樣計算機運算的設計就更簡單了。

於是人們開始探索將符號位參與運算,並且只保留加法的方法。

『伍』 原碼,反碼,補碼的編碼規則

計算機中,並沒有原碼和反碼。

正負數據,在計算機中,只是以補碼存放的。

==============

下面以八位二進制來說明補碼的編碼規則。

八位二進制,共有 256 個補碼。

數字 0,就是以 0000 0000 存放。

數字 1,就是加上 1,得 0000 0001。

其它,繼續加,就行了。

數字 127,就是 0111 1111。

以上就是 0~127 的補碼。

==============

負數,遞減就行了。

數字-1,就從 0,減去一,即:

0000 0000-1 = (借位 1) 1111 1111。

只保留八位,就是 1111 1111(十進制 255)。

數字-2,就再減一,得:1111 1110(= 254)。

數字-3,就再減一,得:1111 1101(= 253)。

其它,繼續減,即可... ...

數字-128,最後就得到:1000 0000(= 128)。

以上這些,就是-1~-128 的補碼。

==============

計算公式:

負數的補碼=【256+該負數】

正數的補碼,就是正數本身

(如果需要二進制,你自己再變換。)

八位補碼可以表示:-128~+127。

==============

用補碼代替負數,就可以把減法,轉換為加法運算。

因此,計算機只要有一個加法器,就夠用了。

例如: 7-3 = 4。

用補碼的計算過程如下:

7 的補碼=0000 0111

-3的補碼=1111 1101

--相加-------------

得:(1)0000 0100= 4 的補碼

舍棄進位,只保留八位作為結果,就是 4。

這就用加法,解決了負數以及減法的問題。

------

原碼和反碼,並沒有這些功能。

所以,在計算機中,根本就沒有原碼和反碼。

所謂的「取反加一」,由誰算呢?

計算機,可不做這些事。

『陸』 原碼為何要轉換為補碼呢

因為加法器。
CPU的加減法是加法器完成的。
當然我們都知道
加上負數就代表減法,CPU也是這么做的。
但問題在於,機器指令,加法ADD,減法SUB。
加法器是只不過是個機器,他的行為很簡單。二進制電路的位邏輯表達很簡單,就是數1bit位,數2bit位,進行異或,然後再和進位標志異或,結果為當前位的值。
如果三個數有2個是1,就會進位。
邏輯很簡單。
拿char來說,
16+16=32,
16+(-16)=0。
二進制
ADD
0001
0000+00010000,答案是0010
0000
就是32。沒問題。
假設僅僅用第一位為符號位,其他位是數字
16+(-16)=
0001
0000
+
1001
0000=
1010
0000
,很可惜這個數是
-32
16+(-16)=-32,悲劇發生。如果用補碼,你就發現奇跡了。。。

『柒』 利用加法器設計一個代碼轉換電路,將bcd代碼的8421碼轉換成餘3碼

根據餘3碼的定義可知,餘3碼是由8421碼加3後形成的代碼。所以,用4位二進制並行加法器實現8421碼到餘3碼的轉換,只需從4位二進制並行加法器的輸入端A4、A3、A2和A1輸入8421碼,而從輸入端B4、B3、B2和B1輸入二進制數0011,進位輸入端C0接上「0」,便可從輸出端F4、F3、F2和F1得到與輸入8421碼對應的餘3碼。

『捌』 原碼的減法為什麼可以轉換成補碼的加法意義又是什麼呢

時鍾,倒撥3小時,可以用正撥9小時來代替。

限定兩位數時,減一,就可用+99代替。

如:24-1=23

24+99=(1)23

只取兩位數,兩個結果,就是相同的。

99,就是-1 的補數。

(在二進制時,就稱為「補碼」。)

就是說:當限定計算的位數後,使用補碼,就可用加法代替減法運算

意義:僅用一個加法器,就可做加減兩種運算。減少硬體,廠家省錢。

『玖』 試用全加器74LS283及相應門電路設計電路,得到二進制數ABCD(原碼)的補碼A'B'C'D'()

有什麼問題可以繼續問 記得給分

『拾』 正數的補碼等於原碼是如何算出來的

這是規定。

補碼是為負數想出來的辦法,目的是減法可以用加補碼的方法實現,補碼可用反碼加1得來,於是又有了負數的反碼。

計算機里有硬體「加法器」,有了補碼,減法也可以用加法器做了,計算機里運算速度硬體遠快於軟體,這就是反碼,補碼和原碼多樣化的原因。

(10)利用加法器實現源碼轉化補碼擴展閱讀:

原碼求補碼

正數

正整數的補碼是其二進製表示,與原碼相同 。

例:+9的補碼是00001001。(備註:這個+9的補碼是用8位2進制來表示的,補碼表示方式很多,還有16位二進制補碼表示形式,以及32位二進制補碼表示形式,64位進制補碼表示形式等。)

負數

求負整數的補碼,將其原碼除符號位外的所有位取反(0變1,1變0,符號位為1不變)後加1。

閱讀全文

與利用加法器實現源碼轉化補碼相關的資料

熱點內容
方舟pv怎麼轉伺服器 瀏覽:99
數據挖掘中誤差值演算法函數 瀏覽:118
php開發套件 瀏覽:190
伺服器的spi板是什麼 瀏覽:896
解壓縮全能王中文密碼是什麼 瀏覽:80
javaftp伺服器上傳文件 瀏覽:103
演算法設計中文版pdf 瀏覽:81
視頻壓縮形式怎麼改 瀏覽:368
perl程序員 瀏覽:789
電子表格對比命令 瀏覽:610
php循環輸出數組內容 瀏覽:750
電腦加密能不能強制關掉 瀏覽:616
趣味單人解壓桌游 瀏覽:212
oppo手機谷歌伺服器無法核實什麼 瀏覽:320
軟體怎麼加密華為 瀏覽:222
掃地機怎麼安裝app 瀏覽:319
考研結合特徵值計演算法 瀏覽:516
操作系統演算法綜合題 瀏覽:152
華為程序員待遇 瀏覽:547
程序員帶娃的圖片 瀏覽:79