二進位制底層加減法的實現原理

2021-10-09 18:12:04 字數 1656 閱讀 4903

計算機底層儲存的基本單位為bit 也就是0與1,數字的表示也是以一串二進位制來表示。那麼如何通過一連串的二進位制來完成計算器的計算功能呢?

何為原碼反碼補碼?

在了解底層加減法之前,先了解下原碼反碼與補碼的區別

整數分為正整數與負整數

怎樣根據二進位制設定乙個數是正數還是負數?根據首位符號:0表示為正數,1表示為負數

正整數的原碼反碼與補碼相等

eg: 1的原碼0000 0001  反碼:0000 0001   補碼:0000 0001

負整數的原碼符號位不變,其他位取反,則為負整數的反碼,補碼在反碼的基礎上再加1。

eg:   -1的原碼1000 0001  反碼:1111 1110  補碼:1111 1111

加減法運算

接下來我們通過乙個例子1+(-3)來了解底層如何實現加減法(乘除法同理)

由於計算機儲存的二進位制都為補碼,因此在操作之前先計算出1與-3的補碼

1: 原碼:0000 0001,反碼:0000 0001  ,補碼:0000 0001

-3:原碼:1000 0011 ,反碼:1111 1100  ,補碼:1111 1101

加減法計算大體分為5部分:

1.求異或^

首先對這倆數求異或操作求值;(啥是異或,倆數的對應位做比較,如果不相等則結果為1,相等則為0)

0000 0001

1111 1101

---------^

1111 1100

求出該值之後記錄下來,後邊會用到!! 

2.求與結果&

緊接著對這倆數進行與操作(對應位的倆數都為1則結果為1,否則都為0),如果求出的與結果為0,則倆數相加結束,計算的結果為上一步的異或所求出的值。如果不為0,則表示需要進製,則對異或的結果進行左移一位操作

0000 0001

1111 1101

---------&

0000 0001

3.左移操作<<

如果第2步與的結果不為0,則左移一位如下所示:

0000 0001

--------- <<1

0000 0010

4.求異或^

緊接著將該值與上一步求出來的異或的結果再次進行異或操作

1111 1100

0000 0010

---------^

1111 1110

5.驗證

同2一樣,對倆數進行與操作,如果與操作的結果為0,則表示運算結束,結果為上一步的異或值,否則繼續重複步驟2

1111 1100

0000 0010

---------&

0000 0000

由於求與的結果為0,則不存在進製,則計算結束,最終的結果為1111 1110;

補碼:1111 1110  轉為反碼(減一):1111 1101   轉為原碼(符號位不變,其他位取反):1000 0010 轉為10進製:-2

二進位制加 減法程式設計實驗

1 熟悉組合語言二進位制多位元組加法基本指令的使用方法 2 熟悉組合語言二進位制多位元組減法基本指令的使用方法 3 掌握組合語言程式設計的一般結構。1 硬體環境 微機cpu 486以上,500mb以上硬碟,32m以上記憶體 2 軟體環境 裝有masm 5.0 debug link和edit等應用程式...

二進位制的減法

這裡需要說明的是,在計算機中做二進位制數運算時,一定要明確是在多少位的整型前提下進行的,這樣才能夠正確處理位數溢位的問題。其實減法也可以看成加法 6 4 無論加減法總結 補碼相加 結果再求補碼 1表示負 0表示正 在計算機中,負數是使用它的補碼來表示的。所謂補碼,就是反碼 1。所謂反碼,就是二進位制...

二進位制的加減法與標誌位CF OF數值的判斷方法

首先先來解釋一下標誌位of cf不同數值所代表的含義 of為1時,代表有符號數越界,即當8位時,超出 128 127的範圍 of為0時,代表有符號數未越界 cf為1時,代表無符號數越界,即當8位時,超出0 255的範圍 cf為0時,代表無符號數未越界 另外cf在迴圈移位 移位類指令中用來儲存從最高位...