導航:首頁 > 源碼編譯 > 一個正整數的源碼反碼補碼

一個正整數的源碼反碼補碼

發布時間:2022-09-20 20:00:55

❶ 整數的原碼,反碼和補碼的表示

原碼表示:將符號位數碼化了的數,其中「+」用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」。

閱讀全文

與一個正整數的源碼反碼補碼相關的資料

熱點內容
噴油螺桿製冷壓縮機 瀏覽:578
python員工信息登記表 瀏覽:376
高中美術pdf 瀏覽:160
java實現排列 瀏覽:512
javavector的用法 瀏覽:981
osi實現加密的三層 瀏覽:231
大眾寶來原廠中控如何安裝app 瀏覽:913
linux內核根文件系統 瀏覽:242
3d的命令面板不見了 瀏覽:525
武漢理工大學伺服器ip地址 瀏覽:148
亞馬遜雲伺服器登錄 瀏覽:524
安卓手機如何進行文件處理 瀏覽:70
mysql執行系統命令 瀏覽:929
php支持curlhttps 瀏覽:142
新預演算法責任 瀏覽:443
伺服器如何處理5萬人同時在線 瀏覽:250
哈夫曼編碼數據壓縮 瀏覽:424
鎖定伺服器是什麼意思 瀏覽:383
場景檢測演算法 瀏覽:616
解壓手機軟體觸屏 瀏覽:348