補碼有什麼用,什麼叫做補碼?

2022-03-14 00:20:34 字數 7485 閱讀 3653

1樓:army1椒rz迫

方便做加法,因為在計算機中要用最高位來表示符號,0為整數,1為負數,所以不要補碼做加法的話,就要情況考慮符號位,就會很麻煩,但是用了補碼算正負數的加法就可以很方便

2樓:做而論道

在計算負數、或減法時,利用補碼,就可以用正數、加法來代替。

3樓:沙裡波特

原碼和反碼,沒有任何意義。

計算機中,也沒有原碼反碼。

正負數字,存放在計算機中,就稱為:補碼。

正數,就直接以二進位制存放。

負數,則需要變換一下,再存放。

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

如果,僅使用兩位十進位制數,就是 00~99,共有 100 個數字。

減一,就可以用 +99 代替:

28 - 1 = 27

28 + 99 = (1) 27

忽略進位,結果就是相同的。

於是,99,就是-1 的補數;

同理,98,就是-1 的補數;

利用【補數】,就可把「相減」運算,改為「相加」。

利用【補數】,就可把「負數」改為「正數」。

對於「-1」,其對應的【補數】就是:100-1 = 99。

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

計算機中,沒有數字。1 和 0,都是**。

八位二進位制**,稱為一個位元組。

0000 0000~1111 1111,共有 256 個**。

-1,就可以用 256- 1 = 255 (=1111 1111) 代替,

-2,就可以用 256- 2 = 254 (=1111 1110) 代替,

那麼,1111 1111 就稱為-1 的補碼;

同理,1111 1110 也就是-2 的補碼。

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

計算機中,只有加法器,沒有減法器。

做減法運算,必須使用【補碼】,用加法來操作。

補碼的定義式,如下:

正數的補碼,就是該數字本身。

負數的補碼,就用「模」,加上該負數,即可。

求補碼,並不需要學習「原碼反碼符號位 」這些垃圾知識。

什麼叫做補碼?

4樓:

補碼是用來解決負數在計算機中的表示問題的。正數的補碼就是其本身;負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 最後+1. (即在反碼的基礎上+1)。

例:1-1 = 1+(-1) = 00000001(原碼) + 100000001(原碼) =00000001(反碼) +11111110(反碼)  = 11111111(反碼)=10000000(原碼) = -0

用反碼運算時,結果為-0,雖然+0和-0都是0,但是看起來總是覺得怪怪的,何況0帶符號沒有任何意義,並且出現了兩個能表示0的二進位制數00000000和10000000。

這讓嚴謹的程式設計師們如何能接受,為了消除歧義,於是出現了反碼。

擴充套件資料

補碼這個編碼方案要解決的是如何在機器中表示負數,其本質意義為用一個正數來表示這個正數對應的負數。所謂-20的補碼是指:如何在機器中用補碼形式表示-20。

具體過程是這樣的:將20的二進位制形式直接寫出00010100,然後所有位取反變成11101011,再加1變成了11101100。最簡單的補碼轉換方式,不必去理會轉換過程中的符號位,只關注轉換前和最終轉換後的符號位就行。

補碼的總前提是機器數,不要忘了機器數的符號位含義,最高位為0表示正數,最高位為1表示負數,而最高位是指機器字長的最左邊一位。位元組數100b,最高位為00000100中的最左邊的0。

5樓:沙裡波特

補碼,應該是最容易理解的知識了。

小學生都可以自己摸索出來。

按照四位二進位制來說,共有 16 組**。

數字 0 的二進位制,就是 0000,

數字 1 的二進位制,就是 0001,

數字 7 的二進位制,就是 0111。

可見下表:

零和正數的補碼

負數怎麼辦?

就從 0000,依次向下減,就行了。那麼:

數字-1 的二進位制,就是 0000-1 = (1) 1111 = 15(十進位制)。

(括號中的 1,是借位,捨棄不要了。)

數字-2 的二進位制,就是 1111-1 = 1110 = 14。

數字-3 的二進位制,就是 1110-1 = 1101 = 13。

數字-8 的二進位制,就是 1000 = 8(十進位制)。

(別再減了。再減,就是 0111 = +7 了。)

可見下表:

負數的補碼

綜合到一起,就是-8~+7 的四位補碼。見下表:

四位補碼

總結:

零和正數的補碼,就是數字本身(也可轉為二進位制)。

負數的補碼,就是: 16+這個負數。

(如果是 8 位二進位制,就改用: 256 + 這個負數。)

整個推算過程,並不需要使用「原碼反碼符號位」這些垃圾。

計算時,使用十進位制,簡單方便。得出的補碼,當然也是十進位制。

如果需要二進位制,就變換一下。

補碼,很難嗎?

如果不涉及原碼反碼符號位,就一點也不難。

-----------

補碼有什麼用呢?

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

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

例如:6-2 = 4,用補碼運算如下:

6 的補碼是 0110、-2 的補碼是 1110。

0110 + 1110 = (1) 0100 (= 4 的補碼)

(括號中的 1,是進位,捨棄不要了。)

注意:

如果運算結果超出了-8~+7 的範圍,結果將是錯的。

這種現象稱為「溢位」。

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

---------

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

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

原碼反碼的用途,只是用於「筆算」。

其實,筆算的方法,並非只有「取反加一」。

原碼反碼,只是磚家為了增加收入,瞎編的垃圾而已。

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

但是,考試怎麼辦?

呃 ...,千萬別跟老師較勁,他怎麼講,你就怎麼答吧。

6樓:

0的補碼是00000000。

假設機器的位長為0,正數x的最高位為0,其餘位為數x的值

(8位長為例)

[+0]補= 0 000 000

負數x的補碼錶示為2^n-|x|

[-0]補 = 2^n = 10000 0000 = 0000 0000

綜合[0]補=0000 0000

計算機中的符號數有三種表示方法,即原碼、反碼和補碼。三種表示方法均有符號位和數值位兩部分,符號位都是用0表示「正」,用1表示「負」,而數值位,三種表示方法各不相同。

在計算機系統中,數值一律用補碼來表示和儲存。原因在於,使用補碼,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理。此外,補碼與原碼相互轉換,其運算過程是相同的,不需要額外的硬體電路。

求給定數值的補碼分以下兩種情況:

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

負數求負整數的補碼,將其對應正數二進位制表示所有位取反(包括符號位,0變1,1變0)後加1 。

同一個數字在不同的補碼錶示形式中是不同的。比如-15的補碼,在8位二進位制中是11110001,然而在16位二進位制補碼錶示中,就是1111111111110001。以下都使用8位2進位制來表示。

7樓:做而論道

計算機裡面,只有加法器,沒有減法器,

減法,必須用加法來完成。

對於 100 以內的十進位制數,《減1》,就可以用《加 99》代替。

比如 25 - 1 = 24,可以寫成 25 + 99 = (1)24。

限定了兩位數,-1 和 +99 是等效的。

同樣,-2,可以用 +98 代替。

……它們之間,稱為《補數》。

100 稱為《模》。

利用《模》,求某個負數的《補數》,小學生都會。

---------------------------對於 8 位二進位制數:0000 0000~1111 1111(255),模為256。

-1,可以用 255(1111 1111)代替。

-2,可以用 254(1111 1110)代替。

……這些二進位制數,就稱為負數的《補碼》。

已知一個負數,求其補碼,用模計算一下,大家都能算出來。

求補碼,完全可以用十進位制數來計算。

原碼、反碼、求反加

一、符號位,這些都是用不著的,瞎忽悠人的。

8樓:摳了愛之位

補碼補碼舉例 1、在計算機系統中,數值一律用補碼來表示(儲存)。

主要原因:使用補碼,可以將符號位和其它位統一處理;同時,減法也可按加法來處理。另外,兩個用補

碼錶示的數相加時,如果最高位(符號位)有進位,則進位被捨棄。

2、補碼與原碼的轉換過程幾乎是相同的。

數值的補碼錶示也分兩種情況:

(1)正數的補碼:與原碼相同。

例如,+9的補碼是00001001。

(2)負數的補碼:符號位為1,其餘位為該數絕對值的原碼按位取反;然後整個數加1。

例如,-7的補碼:因為是負數,則符號位為「1」,整個為10000111;其餘7位為-7的絕對值+7的原碼

0000111按位取反為1111000;再加1,所以-7的補碼是11111001。

已知一個數的補碼,求原碼的操作分兩種情況:

(1)如果補碼的符號位為「0」,表示是一個正數,所以補碼就是該數的原碼。

(2)如果補碼的符號位為「1」,表示是一個負數,求原碼的操作可以是:符號位為1,其餘各位取

反,然後再整個數加1。

例如,已知一個補碼為11111001,則原碼是10000111(-7):因為符號位為「1」,表示是一個負

數,所以該位不變,仍為「1」;其餘7位1111001取反後為0000110;再加1,所以是10000111。

在「閒扯原碼、反碼、補碼」檔案中,沒有提到一個很重要的概念「模」。我在這裡稍微介紹一下「模」

的概念:

「模」是指一個計量系統的計數範圍。如時鐘等。計算機也可以看成一個計量機器,它也有一個計量範

圍,即都存在一個「模」。例如:

時鐘的計量範圍是0~11,模=12。

表示n位的計算機計量範圍是0~2^(n)-1,模=2^(n)。

「模」實質上是計量器產生「溢位」的量,它的值在計量器上表示不出來,計量器上只能表示出模的

餘數。任何有模的計量器,均可化減法為加法運算。

例如: 假設當前時針指向10點,而準確時間是6點,調整時間可有以下兩種撥法:

一種是倒撥4小時,即:10-4=6

另一種是順撥8小時:10+8=12+6=6

在以12模的系統中,加8和減4效果是一樣的,因此凡是減4運算,都可以用加8來代替。

對「模」而言,8和4互為補數。實際上以12模的系統中,11和1,10和2,9和3,7和5,6和6都有這個特

性。共同的特點是兩者相加等於模。

對於計算機,其概念和方法完全一樣。n位計算機,設n=8, 所能表示的最大數是11111111,若再

加1稱為100000000(9位),但因只有8位,最高位1自然丟失。又回了00000000,所以8位二進位制系統的

模為2^8。 在這樣的系統中減法問題也可以化成加法問題,只需把減數用相應的補數表示就可以

了。把補數用到計算機對數的處理上,就是補碼。

另外兩個概念

一的補碼(one's complement) 指的是正數=原碼,負數=反碼

而二的補碼(two's complement) 指的就是通常所指的補碼。

這裡補充補碼的代數加減運算:

1、補碼加法

[x+y]補 = [x]補 + [y]補

【例7】x=+0110011,y=-0101001,求[x+y]補

[x]補=00110011 [y]補=11010111

[x+y]補 = [x]補 + [y]補 = 00110011+11010111=00001010

注:因為計算機中運算器的位長是固定的,上述運算中產生的最高位進位將丟掉,所以結果不是

100001010,而是00001010。

2、補碼減法

[x-y]補 = [x]補 - [y]補 = [x]補 + [-y]補

其中[-y]補稱為負補,求負補的方法是:對補碼的每一位(包括符號位)求反,最後末位加「1」。

這裡補充補碼的代數解釋:

任何一個數都可以表示為-a=2^(n-1)-2^(n-1)-a;

這個假設a為正數,那麼-a就是負數。而根據二進位制轉十進位制數的方法,我們可以把a表示為:a=k0*2^0+k1*2^1+k2*2^2+……+k(n-2)*2^(n-2)

這裡k0,k1,k2,k(n-2)是1或者0,而且這裡設a的二進位制位數為n位,即其模為2^(n-1),而2^(n-1)其二項是:1+2^0+2^1+2^2+……+2^(n-2),而式子:-a=2^(n-1)-2^(n-1)-a中,2^(n-1)-a代入a=k0*2^0+k1*2^1+k2*2^2+……+k(n-2)*2^(n-2)和2^(n-1)=1+2^0+2^1+2^2+……+2^(n-2)兩式,2^(n-1)-a=(1-k(n-2))*2^(n-2)+(1-k(n-3))*2^(n-3)+……+(1-k2)*2^2+(1-k1)*2^1+(1-k0)*2^0+1,而這步轉化正是取反再加1的規則的代數原理所在。

因為這裡k0,k1,k2,k3……不是0就是1,所以1-k0,1-k1,1-k2的運算就是二進位制下的取反,而為什麼要加1,追溯起來就是2^(n-1)的二項式最後還有一項1的緣故。而-a=2^(n-1)-2^(n-1)-a中,還有-2^(n-1)這項未解釋,這項就是補碼裡首位的1,首位1在轉化為十進位制時要乘上2^(n-1),這正是n位二進位制的模。

不能貼公式,所以看起來很麻煩,如果寫成代數式子看起來是很方便的。

注:n位二進位制,最高位為符號位,因此表示的數值範圍-2^(n-1) ——2^(n-1) -1,所以模為2^(n-1)。上面提到的8位二進位制模為2^8是因為最高位非符號位,表示的數值範圍為0——2^8-1。

補碼運算為什麼會溢位判斷補碼溢位的方法我知道我

什麼是溢位?溢位,是指資料的大小,超出了編碼所能表示的範圍。不僅是補碼計算,任何形式的計算,都可能產生溢位。比如 1999 年 2000 年 這是用 4 位十進位制表示。當到了 9999 年,再過一年,你如果還用 4 位表示,就會溢位了。如果不限制編碼的位數,那麼,就不存在溢位的問題。無符號數的溢位...

計算機中,負數為什麼用補碼錶示,二進位制負數的補碼的原理為什麼要用補碼的形式改更負

計算機中,負數為什麼用補碼錶示?這是一個常識性的問題。對於鐘錶,倒撥 5 小時,可以用正撥 7 小時來代替。對於兩位十進位制數,1,可以用 99 來代替。如 25 1 24 25 99 1 24 捨棄進位,結果就是相同的。這裡說到的 5 7 和 1 99 就是互為 補數 的關係。找到了補數,就可以用...

動平衡有什麼用?什麼叫做動平衡?

一般認為汽車動平衡是車輛行駛時車輪之間的平衡。通常所說的加裝平衡塊。主要作用 1 增強駕駛舒適感。2 減少汽油消耗。3 增加輪胎使用壽命。4 保證車輛的直行穩定性。5 降低底盤懸掛配件的磨損。汽車車輪動平衡是指為使車輪旋轉時無因不平衡質量引起的振動與附加力偶而進行的作業。車輪即使是靜平衡的,也可能是...