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 問工嶽熠 變程式設計的話,不需要多深的理解這幾個名詞的意思,這幾個算屬於計算機組成原理的範疇。這些都是資料的的二進位制形式...