❶ 整數的原碼,反碼和補碼的表示
原碼表示:將符號位數碼化了的數,其中「+」用0表示,「-」用1表示。
反碼表示:正數的反碼表示與原碼表示一樣;負數的反碼表示是原碼表示的符號位不變,數值位逐位取反。
補碼表示:正數的補碼表示與原碼表示一樣;負數的補碼表示是原碼表示的符號位不變,數值位逐位取反後最低位加1(反碼表示最低位加1)。
例:
[+63]原=0111111
[+63]反=0111111
[+63]補=0111111
[-63]原=1111111
[-63]反=1000000
[-63]補=1000001
❷ 原碼、補碼、反碼之間是怎樣轉換的
正數的原碼、反碼、補碼是一致的。(例如:2的原碼:0000 0010,那麼其反碼和補碼都是0000 0010)
負數的反碼顧名思義,是除了符號位與原碼一致,其餘位都與原碼相反。(例如:-2的原碼是1000 0010,那麼其反碼是1111 1101),負數的補碼則是在其反碼的基礎上加1。(例如:-2的反碼是1111 1110)
1、首先,數字除了我們平時最長使用的十進制數外,還有二進制,八進制,十六進制等。這里我們的原碼,補碼,反碼之間轉換指的是二進制數。如下。

❸ 一個數的原碼,反碼,補碼怎麼算
計算機中的存儲系統都是用2進制儲存的,對我們輸入的每一個信息它都會自動轉變成二進制的形式,而二進制在存儲的時候就會用到原碼,反碼和補碼例如:輸入25原碼是:0000000000011001反碼: 1111111111100110 補碼: 1111111111100111
數值在計算機中表示形式為機器數,計算機只能識別0和1,使用的是二進制,而在日常生活中人們使用的是十進制,"正如亞里士多德早就指出的那樣,今天十進制的廣泛採用,只不過我們絕大多數人生來具有10個手指頭這個解剖學事實的結果.盡管在歷史上手指計數(5,10進制)的實踐要比二或三進制計數出現的晚. "(摘自<<數學發展史>>有空大家可以看看哦~,很有意思的).為了能方便的與二進制轉換,就使用了十六進制(2 4)和八進制(23).下面進入正題.
數值有正負之分,計算機就用一個數的最高位存放符號(0為正,1為負).這就是機器數的原碼了.假設機器能處理的位數為8.即字長為1byte,原碼能表示數值的范圍為
(-127~-0 +0~127)共256個.
有了數值的表示方法就可以對數進行算術運算.但是很快就發現用帶符號位的原碼進行乘除運算時結果正確,而在加減運算的時候就出現了問題,如下: 假設字長為8bits
( 1 ) 10- ( 1 )10 = ( 1 )10 + ( -1 )10 = ( 0 )10
(00000001)原 + (10000001)原 = (10000010)原 = ( -2 ) 顯然不正確.
因為在兩個整數的加法運算中是沒有問題的,於是就發現問題出現在帶符號位的負數身上,對除符號位外的其餘各位逐位取反就產生了反碼.反碼的取值空間和原碼相同且一一對應. 下面是反碼的減法運算:
( 1 )10 - ( 1 ) 10= ( 1 ) 10+ ( -1 ) 10= ( 0 )10
(00000001) 反+ (11111110)反 = (11111111)反 = ( -0 ) 有問題.
( 1 )10 - ( 2)10 = ( 1 )10 + ( -2 )10 = ( -1 )10
(00000001) 反+ (11111101)反 = (11111110)反 = ( -1 ) 正確
問題出現在(+0)和(-0)上,在人們的計算概念中零是沒有正負之分的.(印度人首先將零作為標記並放入運算之中,包含有零號的印度數學和十進制計數對人類文明的貢獻極大).
於是就引入了補碼概念. 負數的補碼就是對反碼加一,而正數不變,正數的原碼反碼補碼是一樣的.在補碼中用(-128)代替了(-0),所以補碼的表示範圍為:
(-128~0~127)共256個.
注意:(-128)沒有相對應的原碼和反碼, (-128) = (10000000) 補碼的加減運算如下:
( 1 ) 10- ( 1 ) 10= ( 1 )10 + ( -1 )10 = ( 0 )10
(00000001)補 + (11111111)補 = (00000000)補 = ( 0 ) 正確
( 1 ) 10- ( 2) 10= ( 1 )10 + ( -2 )10 = ( -1 )10
(00000001) 補+ (11111110) 補= (11111111)補 = ( -1 ) 正確
所以補碼的設計目的是:
⑴使符號位能與有效值部分一起參加運算,從而簡化運算規則.
⑵使減法運算轉換為加法運算,進一步簡化計算機中運算器的線路設計
所有這些轉換都是在計算機的最底層進行的,而在我們使用的匯編、C等其他高級語言中使用的都是原碼
❹ 一個數的原碼,反碼,補碼
在計算機中,並不存在原碼和反碼。
在計算機中,只用補碼表示帶符號數。
使用了補碼,就可以用加法,代替減法運算,從而簡化計算機硬體。
------
理解補碼,要先從補數開始。
時針轉一圈,周期是 12 小時。
倒撥 3 小時,就可以用正撥 9 小時代替。
9 就是-3 的補數。9 = 12-3。
同理,倒撥分針 X 分,就可以用正撥「60-X」代替。
60 是分針的周期。
------
對於兩位十進制 0~99,周期就是一百。
這時,減一,你就可以用 +99 代替。
25 - 1 = 24
25 + 99 = (1) 24
結果取兩位,舍棄進位。這兩種演算法,功能就是相同的。
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。
------
有了補碼,計算機僅需要一個加法器,即可夠用。
而原碼和反碼,不具備這種能力。
所以,在計算機中,並沒有原碼和反碼。
原碼和反碼,究竟是多少,就不必關心了。
❺ 正數的原碼反碼補碼到底是不是一樣的
C語言里正數的原碼反碼補碼是一樣的。
符號位是0,原碼,反碼,補碼:00001010;
補碼是為負數想出來的辦法,目的是減法可以用加補碼的方法實現。補碼可用反碼加1得來,於是又有了負數的反碼。
計算機里有硬體「加法器」,有了補碼,減法也可以用加法器做了。計算機里運算速度,硬體遠快於軟體,這是做出反碼,補碼和原碼的原因。

(5)一個正整數的源碼反碼補碼擴展閱讀
1、原碼的優點
簡單直觀,例如:用8位二進製表示一個數,+11的原碼為00001011,-11的原碼就是10001011;
原碼不能直接參加運算,可能會出錯。例如數學上,1+(-1)=0,而在二進制中。
2、原碼的缺點
例:00000001+10000001=10000010,換算成十進制為-2。顯然出錯了。
所以原碼的符號位不能直接參與運算,必須和其他位分開,這就增加了硬體的開銷和復雜性。
❻ 如何求一個正數或者負數的原碼,反碼,補碼比如+5
正數的原碼,反碼,補碼就是它的二進制數
負數原碼是它的二進制數
反碼是原碼各位取反0取反是1,1取反是0
補碼就是反碼加1
如+5的原碼,反碼,補碼都是1,101
而-5的原碼是0,101
反碼0,010
補碼0,011
正號用1表示
負號用0表示
❼ 整數的原碼、反碼、補碼是什麼意思
在計算機中,並不存在原碼和反碼。
在計算機中,只用補碼表示帶符號數。
使用補碼的意義:可用加法,代替減法運算,從而簡化計算機硬體。
------
理解補碼,要先從補數開始。
時針轉一圈,周期是 12 小時。
倒撥 3 小時,就可以用正撥 9 小時代替。
9 就是-3 的補數。9 = 12-3。
同理,分針倒撥 X 分,也可以用正撥「60-X」代替。
60 是分針的周期。
------
對於兩位十進制 0~99,周期就是一百。
這時,減一,你就可以用 +99 代替。
25 - 1 = 24
25 + 99 = (1) 24
結果取兩位,舍棄進位。這兩種演算法,功能就是相同的。
99,就稱為-1 的補數。
98,就是-2 的補數。
。。。
其它補數,你自己都會求的。
利用補數,就可以用加法,代替減法運算。
補數怎麼求?
正數,不需要求補數。也可以說,本身就是補數。
負數的補數 = 周期 + 該負數。
------
計算機使用二進制,補數,就改稱:補碼。
八位二進制,共有 256 個數字。周期就是 256。
負數的補碼 = 256+該負數。
16位二進制,共有 2^16 個數字。周期就是 65536。
負數的補碼 = 65536+ 該負數。
正數,不需要做變換。或者說,正數本身就是補碼。
那麼,在八位二進制時:
-1 的補碼是:256-1 = 255 = 1111 1111(二進制)。
-2 的補碼是:254 = 1111 1110。
-3 的補碼是:253 = 1111 1101。
。。。
-128 補碼:128 = 1000 0000。
------
補碼的應用如: 7-3 = 4。
用補碼的計算過程如下:
7 的補碼=0000 0111
-3的補碼=1111 1101
--相加-------------
得:(1)0000 0100= 4 的補碼
舍棄進位,只保留八位,結果肯定正確。
------
有了補碼,計算機,僅需配置一個加法器即可。
而原碼和反碼,不具備這種能力。
所以,在計算機中,並沒有原碼和反碼。
原碼和反碼,根本不存在。
都是多少,就不必關心了。
❽ 一個數的原碼,反碼,補碼怎麼算
數字,存在計算機中,就是「碼」。
在計算機中,沒有原碼和反碼。
計算機,只是使用「補碼」來存放「正負數」。
以八位為例:
數字 0 的存放形式是:0000 0000。
數字+1,就是加上一:0000 0001。
數字+2,就再加上一:0000 0010。
數字+3,就依此類推:0000 0011。
... ... 依次加一,即可。
----------
負數,就是依次減一。
數字 0 的存放形式是:0000 0000。
數字-1,就是減一:0000 0000-1,
只保留八位,可得:1111 1111(=255)。
數字-2,就再減一:1111 1110(=254)。
數字-3,繼續減一:1111 1101(=253)。
... ... 然後你就依次減一吧 ... ...
----------
以上,是計算機中的補碼。
---------
八位補碼的表示範圍:-128~+127。
八位補碼的計算公式:
正數的補碼:就是正數本身。
負數的補碼:256-該負數。
(如果需要二進制,你就再轉換一下。)
---------
補碼,完全是由二進制加一減一自然形成的,和原碼反碼沒有任何關系。
計算機中,也沒有原碼和反碼。
所以,原碼和反碼,都沒有任何用處。
❾ 為什麼正整數的原碼,反碼,補碼相同..
這是一種規定。
補碼是為負數想出度來的辦法,目的是減法可以用加補碼的方法實現,補碼可用反碼加1得來,於是又有了負數的知反碼。
計算機里有硬體「加法器」,有了補碼,減法道也可以用加法器做了。
計算機里運算速度,內硬體遠快於軟體,這就是反碼,補碼和原碼花樣的原因。

(9)一個正整數的源碼反碼補碼擴展閱讀:
原碼、反碼和補碼是計算機中對數字二進制的三種表示方法。
1、原碼
原碼(true form)是一種計算機中對數字的二進制定點表示方法。
2、反碼
反碼是數值存儲的一種,多應用於系統環境設置,如linux平台的目錄和文件的默認許可權的設置umask,就是使用反碼原理。
3、補碼
正數:正數的補碼和原碼相同。負數:負數的補碼則是符號位為「1」。