c 中 補碼 原碼 反碼 是什麼意思?

時間 2023-03-16 21:45:05

1樓:聽不清啊

關於原碼、反碼和補碼的來龍去脈,這話太長,有興趣的請詳見網頁:

下面只是介紹它們之間的關係:

所有正數,它們的原碼、反碼和補碼完全相同。

原碼就是符號位加上真值的絕對值,即用最高位是符號位,0正數,1表示負數。其餘位表示絕對值。

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

負數的補碼是在其原碼的基礎上,符號位不變,其餘各位取反,最後+1(也即在反碼的基礎上+1)。

比如10的原碼就是00001010,+10的原碼是00001010,最高位的0代表 這個數是正數,-10的原碼就是10001010,最高位的1代表這個數是負數。

-10的原碼是10001010,那他的反碼是11110101,也就是符號位不變,其他位0變1,1變0。

它的補碼是在反碼的基礎上,最低位加1,也就是11110110。

2樓:沙里波特

負數在計算機中,以補碼存放。

(原碼、反碼,之不過是求補碼的中間過程。計算機中,並沒有這些。)學高階語言,不用討論計算機內部的東西。

餘三嗎、格雷碼、bcd 碼。計算機中的東西,多了,你能學過來嗎?

教材,就是瞎編。

深入的東西,編者都弄不明白,他就不寫了。

3樓:無敵小雞

上網找例子,直接解釋有點不好理解。

整數的原碼、反碼、補碼是什麼意思??

原碼,反碼,補碼的定義是什麼。

4樓:沙里波特

有符號數,有三種表示方法,即原碼、反碼和補碼。

但是,在計算機系統中,數值一律用補碼來表示和儲存。

所以,在計算機系統中,原碼和反碼,都是不存在的。

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

鐘錶的時針轉一圈,週期是 12 小時。

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

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

同理,分針倒撥 x 分,就可以用正撥(60-x)代替。

60 是分針的週期。

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

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

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

99,就稱為-1 的補數。

98,就是-2 的補數。

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

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

正數,不需要求補數。

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

八位二進位制,共有 256 個數字。負數的補碼 = 256+該負數。

16 位二進位制,共有 2^16 個數字。負數的補碼 = 65536+ 該負數。

這就是補碼的定義式。在你的書上,一定能找到這種算式。

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

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

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

-128 補碼:128 = 1000 0000。

有了補碼,計算機僅需要乙個加法器,就可以加減通用了。

而原碼和反碼,不具備這種能力。

所以,原碼和反碼,究竟是怎麼定義,就不必關心了。

因為,它們,毫無用處。

5樓:沐閔馬佳晉

原碼:在數值前直接加一符號位的表示法。對於8位二進位制來說:

[+7]原=

[-7]原=

反碼:正數的反碼與原碼相同。

負數的反碼,符號位為「1」,數值部分按位取反。

[+7]反=

[-7]反=

補碼:正數的補碼和原碼相同。

負數的補碼則是符號位為「1」,數值部分按位取反後再在末位(最低位)加1。也就是「反碼+1」。

[+7]補=

[-7]補=

什麼是原碼、反碼、補碼?

6樓:京安嫻邸暢

1):補碼加法公式。

[x+y]補。

=[x]補。

+[y]補。

2):補碼減法公式。

[x-y]補。

=[x]補-[y]補。

=[x]補。

+[-y]補。

其中:[-y]補稱為負補,求負補的辦法是:對補碼的每一位(包括符合位)求反,且未位加1.

7樓:沙里波特

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

只要掌握了補碼,即可。

小數補碼的定義式:

[x]補 = x ; 0 ≤ x < 1[x]補 = 2+x ; 1 ≤ x < 0例如:x = 1000, 則 [x]補 = 0010 1000。

x = 1000, 則 [x]補 = 1100 1000。

原碼、反碼和補碼

8樓:沙里波特

帶符號的數字,可變成各種**,見圖:

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

只有補碼,才是實用的編碼。

其變換規律,可以自己摸索出來。

9樓:做而論道

補碼,其實,就是乙個【代替負數進行運算】的正數。

用補碼代替負數之後,計算機中,就不存在負數了。

隨之而來的是,計算機中,也就沒有減法運算了。

即:借助於補碼,能夠簡化運算。也就可以簡化硬體。

補碼(乙個正數),怎麼就能「代替負數」呢?

且看 2 位 10 進製的運算:

28 + 99 = 一百) 27

只要忽略進製(10^2),+99 和-1 的功能,就是相同的。

此時,就稱 +99 是-1 的補數。

同理,+98 就是-2 的補數。

求補數的計算公式,你也可以推導出來:

補數 = 負數 + 10^n, n 是補數的位數。

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

對於 8 位 2 進製來說,應按照如下公式來求補碼:

計算公式: 補碼= 負數 + 2^n, n 是補碼的位數。

8 位 2 進製,總共可以構成 2^8 = 256 組補碼。

其中,包括有 128 個負數的補碼。

如下:[-1]補 = 2^8-1 = 255 = 1111 1111 (二進位制)。

[-2]補 = 2^8-2 = 254 = 1111 1110 (二進位制)。

[-128]補 = 256-128 = 128 = 1000 0000。

正數,不可變換,必須直接參加運算。

所以,正數,不存在補碼。

原碼和反碼,都沒有簡化硬體的功能。

所以,計算機中,只用補碼,根本就不用原碼和反碼。

求補碼,千萬不要走「原碼反碼符號位取反加一」這條路。

否則,你就不會知道: 何? 為? 補? 碼?

用八位補碼計算:7-5 = 2。

[-5]補 =

相加

進製,是超出 8 位的,捨棄即可。

由此次計算,也可以看到:

使用了補碼,減法,就轉換成了加法。

原碼反碼,都沒有這種功能。

所以,計算機中,根本就沒有它們的影子。

10樓:青染漣漪

原碼:在用二進位制原碼表示的數中,符號位為0表示正數,符號位為1表示負數,其餘各位表示數值部分。如:10000010表示-2,00000010表示2。

反碼: 反碼的定義如下:

⑴對於正數,它的反碼表示與原碼相同。即[x]反=[x]原。

⑵對於負數,則除符號位仍為「1」外,其餘各位「1」換成「0」,「0」換成「1」,即得到反碼[x]反。例如[11101001]反=10010110。

⑶對於0,它的反碼有兩種表示:[+0]反=00…0 [-0]反=11…1

補碼:正數的補碼就是該正數本身。

[01100100]補=01000100

對於負數:符號位不變,反碼加1。

[10100100]補=11011011

[+0]補=[-0]補=00…0。

希望我的能幫到你。

什麼是補碼?c++

11樓:沙里波特

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

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

凡是負數或減法,都必須用其對應的補碼,再用加法來完成。

比如十進位制運算:

忽略進製,這兩種演算法的功能,就是相同的。

99,就是-1 的補數。借助於補數,就能用加法,實現減法運算。

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

在八位機中,0 的補碼是:0000 0000。

-1 就是零減一:0000 0000-1 = 1111 1111=255(十進位制)。

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

-x 的補碼,就是:256-x。補碼,和原碼反碼,都沒有任何關係。

12樓:素櫻那拉紅旭

補碼:在計算機系統中,數值一律用補碼來表示和儲存。

原因在於使用補碼,可以將符號位和數值位統一處理;同時,加法和減法也可以統一處理。

補碼特性。1、乙個整數(或原碼)與其補數(或補碼)相加,和為模。

2、對乙個整數的補碼再求補碼,等於該整數自身。

3、補碼的正零與負零表示方法相同。

原碼,反碼,補碼怎麼解釋

13樓:沙里波特

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

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

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

十進位制數 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 的補碼是

-2 的補碼是

--相加---

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

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

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

這種現象稱為「溢位」。

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

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

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

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

什麼是補碼,如何轉換反碼 補碼 原碼?

原碼 補碼 反碼之間是怎樣轉換的?一 正整數的原碼 反碼 補碼完全一樣,即符號位固定為0,數值位相同。二 負整數的符號位固定為1,由原碼變為補碼時,規則如下 1 原碼符號位1不變,整數的每一位二進位制數字求反,得到反碼。2 反碼符號位1不變,反碼數值位最低位加1,得到補碼。方法 1 正整數的原碼,反...

原碼,補碼,反碼和ASCII編碼有什麼不同

關於原碼反碼補碼,您可以借本 計算機組成原理 看看計算機中資料的表示形式。首先更正下樓上的說法,正數的原碼反碼補碼都相同,即0011的反碼也為0011 切記 舉例來說 對於正數3,其二進位制形式為 0011,我們把 0011成為成為真值,在計算機中用0或1表示正負號,那麼 0011在計算機中原碼可以...

請問計算機中補碼,原碼,反碼,移碼的定義以及各自的作用是什麼

宿夏青有華 上面那個是原碼,反碼就是把上面的1變0,0變1,補碼就是在反碼後在加上1.移碼就是整個的移位,你想移幾位就移幾位,比如110移後為100。這是右移,移動沒的就補上0 問工嶽熠 變程式設計的話,不需要多深的理解這幾個名詞的意思,這幾個算屬於計算機組成原理的範疇。這些都是資料的的二進位制形式...