正數的補碼等於原碼是如何算出來的

2022-03-05 05:04:14 字數 5339 閱讀 2239

1樓:四舍**入

這是規定。

補碼是為負數想出來的辦法,目的是減法可以用加補碼的方法實現,補碼可用反碼加1得來,於是又有了負數的反碼。

計算機裡有硬體「加法器」,有了補碼,減法也可以用加法器做了,計算機裡運算速度硬體遠快於軟體,這就是反碼,補碼和原碼多樣化的原因。

2樓:做而論道

正數的原碼=反碼=補碼,這是規定的,不是算的。

如果,問的是負數,可以參考:

3樓:匿名使用者

正數的補碼是其本身,負數的補碼為原碼取反再加1

4樓:自考生

我的天,正數的補碼還需要算嗎...如果不是二進位制你就算出它的二進位制數。大哥,看下書吧。正數的補碼就是其本身....

5樓:匿名使用者

你真的不想死記住嗎???

說白了,補碼反碼就是為了簡化減法而來的,將減號化為負數

再將負數化為補碼求加法

跟正數沒關係

不管是正整數還是正小數,原碼,反碼,補碼都全部相同

數值在計算機中表示形式為機器數,計算機只能識別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等其他高階語言中使用的都是原碼。看了上面這些大家應該對原碼、反碼、補碼有了新的認識了吧!

下文出自

容我問句:「你想死記還是想搞清楚?」

如果你真想搞清楚,請繼續堅持,將來一定很了不起!

~~~~~~~~~~~~~~~~~~~~~~有看不懂的隨時來問。

怎麼求補碼的原碼?

6樓:橘子閃爍

已知一個數的補碼,求原碼的操作其實就是對該補碼再求補碼:

1、如果補碼的符號位為「0」,表示是一個正數,其原碼就是補碼。

2、如果補碼的符號位為「1」,表示是一個負數,那麼求給定的這個補碼的補碼就是要求的原碼。

例如:已知一個補碼為11111001,則原碼是10000111(-7)。因為符號位為「1」,表示是一個負數,所以該位不變,仍為「1」。

其餘七位1111001取反後為0000110;再加1,所以是10000111。

7樓:狼道刀

以補碼10010110為例,有兩種計算方法求原碼:

演算法1:

補碼=原碼取反再加1的逆運算。

10010110是補碼,應先減去1變為反碼,得10010101;

由反碼取得原始碼即除符號位外其他為按位取反,得11101010,即十進位制數的-106。

演算法2:

負數補碼速演算法,由最低位(右)向高位(左)查詢到第一個1與符號位之間的所有數字按位取反的逆運算

10010110是補碼,符號位與最後一個1之間的所有數字按位取反,得11101010

擴充套件資料

計算機系統中的補碼和原碼:

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

原碼(true form)是一種計算機中對數字的二進位制定點表示方法。原碼錶示法在數值前面增加了一位符號位(即最高位為符號位):正數該位為0,負數該位為1(0有兩種表示:

+0和-0),其餘位表示數值的大小。原碼不能直接參加運算,可能會出錯。

例如數學上,1+(-1)=0,而在二進位制中00000001+10000001=10000010,換算成十進位制為-2。顯然出錯了。

8樓:炸毛什造

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

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

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

例如,已知一個補碼為11111001,則原碼是10000111(-7):因為符號位為「1」,表示是一個負數,所以該位不變,仍為   「1」;其餘7位1111001取反後為0000110;再加1,所以是10000111。

9樓:美食藝術

補碼的運算:聽老師講解真值、原碼、反碼和補碼

10樓:

9碼的原始碼他們這些人馬,數值對比都是有很大的差距。

11樓:沙裡波特

對於二進位制數來說,取反加1、減1取反,結果是完全相同的。

所以,可以使用同樣的方法來做。

甚至,求補碼時,你也可以用「減1取反」,一點也沒毛病。

12樓:藍雨

補碼的補碼就是原碼!

帶符號數中只有負數的原碼反碼和補碼是不一樣的,正數的這些都是一樣的,涉及碼制轉換!

原碼求補碼是取反加1

補碼求原碼還是是取反加1(符號位除外)

13樓:匿名使用者

有符號數,最高位為1的話除最高位之外取反加1即為原始碼,正數不變

14樓:匿名使用者

如果是帶符號的數,那麼看它的最高位,如果是1,則是負數,符號位不變,減一後取反碼。

是正數就不變。它的補碼就是它的原始碼

原碼=補碼-1後的反碼

15樓:匿名使用者

就是對補碼求補碼,你可以試試!

對於正數,其原碼、反碼、補碼是相同的嗎

16樓:丶兔牙媽媽

相同的,正數的原碼=反碼=補碼。引進補碼的作用是為了讓計算機更方便做減法。

例如:按時間12個小時來算,現在的準確時間是4點,有一個表顯示的是7點,如果要校準時間,我們可以將時針退7-4=3格,也可以向前撥12-3=9格,計算機做減法就可以轉化成-3=+9,這樣可以簡化計算機的硬體裝置去做複雜的減法。

然而得到補碼的定義:正數時仍為正,而負數x求補要從2減去|x|。本就為了簡化減法引進的補碼,結果在求補的過程中還是出現減法。

這樣,再引進了反碼錶示法方便求補。補碼反碼就是為了簡化減法而來的,將減號化為負數,再將負數化為補碼求加法,跟正數沒關係。所以不管是正整數還是正小數,原碼,反碼,補碼都全部相同。

原碼是一種計算機中對數字的二進位制定點的表示方法。原碼是指一個二進位制數左邊加上符號位後所得到的碼,且當二進位制數大於0時,符號位為0;二進位制數小於0時,符號位為1;二進位制數等於0時,符號位可以為0或1。原碼是有符號數的最簡單的編碼方式,便於輸入輸出,但作為**加減運算時較為複雜。

數值位表示真值的絕對值。凡不足n-1位的,小數在最低位右邊加零;整數則在最高位左邊加零以補足n-1位。**中的小數點」.

」是在書寫時為了清晰起見加上去的,在機器中並不出現。

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

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

n位計算機,設n=8,所能表示的最大數是11111111,若再加1成為100000000(9位),但因只有8位,最高位1自然丟失。又回了00000000,所以8位二進位制系統的模為2^8。在這樣的系統中減法問題也可以化成加法問題,只需把減數用相應的補數表示就可以了。

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

反碼是數值儲存的一種,但是由於補碼更能有效表現數字在計算機中的形式,所以多數計算機都不採用反碼錶示數。

對於正數,其原碼 反碼 補碼是相同的嗎

相同的,正數的原碼 反碼 補碼。引進補碼的作用是為了讓計算機更方便做減法。例如 按時間12個小時來算,現在的準確時間是4點,有一個表顯示的是7點,如果要校準時間,我們可以將時針退7 4 3格,也可以向前撥12 3 9格,計算機做減法就可以轉化成 3 9,這樣可以簡化計算機的硬體裝置去做複雜的減法。然...

平碼如何算出來的,四個平碼如何算出來的

注 圈裡面的數字表示平碼的個數 二中二 計算方法如下 個號1組 個號3組 3 2 2 3組 個6組 4 3 2 6組 個10組 5 4 2 10組 個15組 6 5 2 15組 個21組 7 6 2 21組 個28組 8 7 2 28組 個36組 9 8 2 36組 個45組 10 9 2 45組 ...

利潤如何核算出來的

假定消費者同樣是購買一件價值100元的商品,對於商家來說以上三種方式的應納稅情況及利潤情況如下 暫不考慮城建稅和教育費附加 1.商品7折銷售,價值100元的商品售價70元 應繳增值稅額 70 1 17 17 60 1 17 17 1.45 元 利潤額 70 1 17 60 1 17 8.55 元 應...