1樓:吉傲科技
補碼的計算方法有二進位補碼的計算和十進位補碼的計算。
1、二進位補碼的計算方法:
二進位的補碼計算非常簡單,各種教材中也經常使用二進位來說明原始碼、反碼與補碼三者的關係,掌握一定基礎的人都知道一下規則:
1)原碼。最高位為符號位,0表示正數,1表示負數。
例如:x=0b11(3),四位元表示原碼=0011(3);
x=-0b11(-3),四位元表示原碼=1011(11);
2)反碼。最高位為符號位,0表示正數,1表示負數。正數的反碼等於本身,負數的反碼除符號位外,各位取反。
例如:x=0b11(3),四位元表示原碼=0011(3),對應反碼為=0011(3);
x=-0b11(-3),四位元表示原碼=1011(11),對應反碼為=1100(12);
3)補碼。最高位為符號位,0表示正數,1表示負數。
正數的補碼等於本身,負數的補碼等於反碼+1:
例如:x=0b11(3),四位元表示原碼=0011(3),對應反碼為=0011(3),補碼為=0011(3);
x=-0b11(-3),四位元表示原碼=1011(11),對應反碼為=1100(12),補碼為1101(13);
2、十進位補碼的計算方法:
對於十進位數來說,通過前面的性質不難得到正十進位數補碼等於其本身,對於負十進位數來說如果還按位進行運算就太麻煩了!為了講明白,我們從補碼的起因說起:
反碼加一」只是補碼所具有的乙個性質,不能被定義成補碼。負數的補碼,是能夠和其相反數相加通過溢位從而使計算機內計算結果變為0的二進位碼。這是補碼設計的初衷,具體目標就是讓1+(-1)=0,這利用原碼是無法得到的:
而在補碼中:
0001(1補)+1111(-1補)=10000(1溢位)。
所以對於乙個n位的負數-x,有如下關係:x補+(-x)補=100...0=2n。
所以假設暫存器是n位的,那麼-x的補碼,應該是2n−x的二進位編碼。
2樓:做而論道
計算機中的計算,都是用補碼進行的。
極其簡單!計算機中,只有加法器。補碼的計算,也只有一種:加法。你記住:逢二進一,就行了。
3樓:奶昔
補碼的演算法如下:
一、補碼加法。
x+y]補 = x]補 + y]補。
例:x=+0110011,y=-0101001,求[x+y]補。
x]補=00110011 [y]補=11010111
x+y]補 = x]補 + y]補 = 00110011+11010111=00001010
注:因為計算機中運算器的位長是固定的,上述運算中產生的最高位進位將丟掉,所以結果不是100001010,而是00001010。
二、補碼減法。
x-y]補 = x]補 - y]補 = x]補 + y]補。
其中[-y]補稱為負補,求負補的方法是:負數的絕對值的原碼所有位按位取反;然後整個數加1。
例:1+(-1)[十進位]
1的原碼00000001 轉換成補碼:00000001
1的原碼10000001 轉換成補碼:11111111
00000000轉換成十進位為0
0=0所以運算正確。
三、補碼乘法。
設被乘數【x】補=,乘數【y】補=。
x*y】補=【x】補×【y】補,即乘數(被乘數)相乘的補碼等於補碼的相乘。
補碼的含義:
計算機中的有符號數有三種表示方法,即原碼、反碼和補碼。三種表示方法均有符號位和數值位兩部分,符號位都是用0表示「正」,用1表示「負」,而數值位,三種表示方法各不相同。在計算機系統中,數值一律用補碼來表示和儲存。
原因在於,使用補碼,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理 。
如何求補碼
4樓:太平洋電腦網
問題之前先讓我們來了解一下:
乙個數在計算機中的二進位表示形式, 叫做這個數的機器數。機器數是帶符號的,在計算機用乙個數的最高位存放符號, 正數為0, 負數為1。
原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其餘位表示值。
反碼的表示方法是:正數的反碼是其本身;負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反。
補碼的表示方法是:正數的補碼就是其本身;負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 最後+1 (即在反碼的基礎上+1)。
因此我們在求乙個數的補碼之前,應當先求出這個數的原碼。
將乙個數轉化為二進位數,既是它的原始碼。可通過除二求餘法算得(既對乙個數除二求餘,這會得出乙個數和乙個餘數,再對得出來的數進行求餘,得出餘數,以此類推,最後將餘數倒寫即可)。
如是乙個正數,它的補碼與它的原碼相同;如果是乙個負數,它的補碼是在它的原碼的基礎上,開頭符號位不變,其餘各位取反,最後再在其上面+1(既在反碼的基礎上+1)。
5樓:做而論道
首先應確定,補碼的位數。
再看下圖,即可找到方法。
補碼怎麼算?舉例說明.
6樓:帳號已登出
+62原碼01000001,反碼和補碼與原碼相同。
62原碼11000001:
反碼10111110
補碼10111111
例如:+64 原碼=反碼=補碼=0100 0000。
10 原碼=1000 1010;
10 反碼=1111 0101;
10 補碼=1111 0110。
以補碼相加,得:0011 0110,這是+54 的補碼。
7樓:做而論道
補碼怎麼算?舉例說明。
在計算機系統中,數值,一律採用補碼錶示和儲存。
數值與八位補碼,對應關係如下:
求-9 的八位補碼,方法步驟如下。先減一:9-1 = 8 = 0000 1000 (二進位)。
再取反:1111 0111。完事。
補碼運算規則是什麼?
8樓:諾諾百科
對於正數,原碼反碼補碼都是一樣的,對於負數,不看符號位對於剩下求反。
就是把0變成1把1變成0,就是求反了,求反後+1再添上符號位。就得到了補碼,注意這裡符號位是不參與取反與+1的10000001
首位(符號位)是1,這個數位負數。
取反:11111110加1
11111111結果為-127
9樓:沙裡波特
計算機中,只有加法器。
藉助補碼,就不用做減法了。
乘除法,也是沒有意義的。
所以,補碼,只有加法運算。 按照:逢二進一,即可。
booth演算法的右移怎麼移,補碼booth演算法中移位的問題!
最高位是1表示負的,0是正的 0001 1111 1右移1位 0000 1111 11001 1111 1右移1位 1000 1111 1您說的差不多是對的 補碼booth演算法中移位的問題!我日!等了半天 這麼個破問題也沒人解決 幸好我自己弄懂了首先右移的時候把部分積r0和乘數ri 看為乙個整體然...
二進位制補碼怎麼計算的
1 正數的補碼表示 正數的補碼 原碼 負數的補碼 or 以十進位制整數 97和 97為例 97原碼 0110 0001b 97補碼 0110 0001b 97原碼 1110 0001b 97補碼 1001 1111b 2 純小數的原碼 純小數的原碼如何得到呢?方法有很多,在這裡提供一種較為便於筆算的...
AND和DIV組合語言怎麼執行,舉例說明一下
and al 0fh 為邏輯運算指令bai 即 按位與運du算 可以使累加器 zhial與上00001111 結果是對累dao加器高4位清零 低4位內容保持專不變data segmnt x db 78data ends mov ax,1234 div x div為無符屬號數的除法指令 除數是x 儲存...