為啥整數的補碼是其本身 0001 的補碼是多少

2023-07-14 13:20:55 字數 4888 閱讀 9814

1樓:做而論道

其實,補碼,它就是一個「代表負數」的正數。

使用了補碼之後,計算機中,就沒有負數了。

而且,也就沒有減法運算了。

那麼,計算機中,只需配置一個加法器,就可以走遍天下了。

補碼(一個正數)怎麼就能代表負數呢?

你看 10 進位制: 28 - 1 = 27

28 + 99 = 一百) 27

只要你限制在2 位數,超過 2 位就捨棄!

那麼,+99 和-1,就是等效的。

同樣,+98 就能代表-2。

這些正數,就叫做「負數的補數」。

計算公式,你肯定能推出來: 補數 = 負數 + 10^2。

正數,已經就是正數了,必須直接參加運算,不許變化。

當然,也有人說,正數,其本身就是補碼。

計算機中,以 8 位 2 進位制,稱為一個位元組。

那麼有:-1 的補碼,就是:-1 + 2^8 = 255 =1111 1111 (二進位制)。

-2 的補碼

-128 的補碼:

有了這些,不就完事了嗎?

原碼反碼取反加一符號位不變。。。還弄這些幹嘛?

老外,數學不好,只能絞盡腦汁,弄出這些個騷操作!

從原碼反碼,開始學習補碼,就弄不明白【補碼的意義】。

而且,還會在-0、-128 這裡,走進死衚衕,找不到出路。

2樓:盍蕾閆興昌

正整數的原碼,反碼,補碼都是一樣的,這是人為規定的,不需要理解。

正正數的:原碼 +5[0101]

反碼 +5[0101]

補碼 +5[0101]

負整數的:原碼 -5[1101]

反碼 -5[1010]

補碼 -5[1011]

你的問題,0001的補碼是多少,如果最高位0是符號位,補碼仍然是0001

如果在這個之前還有其他符號位如 0 0001或1 0001按照最高符號位判斷,最高符號位為0反補都不變,最高符號位為1,反碼取反,補碼加1

怎麼理解-128的原碼是 1000 0000 ,補碼也是1000 0000 。

3樓:做而論道

怎麼理解 128 的原碼是 1000 0000 ,補碼也是 1000 0000。

另外, -127 的原碼是 1111 1111 , 為什麼 -128 就成了 1000 0000

在碼長八位時,-128 並沒有原碼反碼,只有補碼:1000 0000。

求-128 的補碼,取反加一,是不好用的。

必須用「補碼的定義式」才能求出-128 的補碼。

定義式如下:

負數的補碼 = 2^n -|負數 | 256 + 對應的正數。

零和正數,不用變,直接參加計算。

4樓:匿名使用者

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

0和-0),其餘位表示數值的大小。

當字長為8位時,(-128)沒有相對應的原碼和反碼, (128) =10000000)

128的機器碼原碼實際是:110000000,反碼101111111,補碼110000000,擷取低8位即10000000,表示的是一個負數。

是不是任意補碼為數值部分的值加上-128就是真值 如補碼10000001的真值為-

5樓:做而論道

八位二進位制**,範圍是 0~255,以補碼形式,可代表真值:-128~+127。

八位的補碼,在 0~127,即小於 128 時,直接代表零和正數。

該補碼,就是該數的真值。

八位的補碼,在 128~255,即大於 127 時,就代表負數 -128 ~ 1 了。

用這個補碼,加上-256,即可得出真值。

如補碼 1000 0001,即 129,加上-256,即可得出真值為-127。

如補碼 1000 0000,即 128,加上-256,即可得出真值為-128。

如補碼 1111 1111,即 255,加上-256,即可得出真值為-1。

如果是負數,求補碼,加上 256 即可。

如,真值是 -1,補碼就是 256 - 1 = 255,這就是 -1 的補碼。

做這些變換,根本不用二進位制,也不用《求反加一》這些麻煩事。

6樓:匿名使用者

10000001的真值不應該是287嗎。

整數的補碼怎麼表示

7樓:夏天的小紅花

補碼的最高位:0表示正數,1表示負數。

資料位:正數就是數值的二進位制數。

負數是取原數絕對值。

的二進位制數,每一位取反互換)後,末位加1。

8樓:金色潛鳥

正數的補碼就是正數的原碼,不變化。

負數的補碼,等於 不考慮符號位時 的數碼的反 碼 加 1。

例如 十進位制 -9, 一位元組原碼: 1000 1001; 最高位是符號位,符號位1是負數。

反碼:1111 0110, 加1得補碼 1111 0111。

9樓:做而論道

還能怎麼表示?

無論是整數,還是小數,或者是分數,無論你選用什麼**,都是用二進位制的 表示。

請問計算機的補碼總為什麼0有唯一的補碼,即[+0]=[-0]=00000000?[-0]不應該不是這樣嗎???

10樓:匿名使用者

貌似是因為計算機中沒有+0和-0的區別。拿8位機舉例:如果有正零和負零的區別的話計算機一位的長度只能表示-127~+127共255個數,但是如果把1000,0000即我們認為的-0判斷成+128就能多表示一個數。

為了功能更強大,所以設計人員讓計算機內部就不區別+0,-0所以也就不存在-0這個東東,所以0的補碼是唯一的也就是+0的補碼。

11樓:做而論道

難道還有+0 和-0 的補碼?

求原碼反碼補碼,都是針對【數值】進行的。

要知道,天下只有一個零。這可是小學生都知道的知識。

所以,數值,只有正數、負數、零。

根本就沒有正零負零。

但是,大佬卻在原碼反碼中都編了**。他們這是想「上天」哪!

零的原碼,有兩個**:

0]原碼 = 0000 0000、[-0]原碼 = 1000 0000。

反碼,不甘落後,也是有兩個**:

0]反碼 = 0000 0000、[-0]反碼 = 1111 1111。

在這兩種**中,都是重複定義了「零的編碼」,這就造成了混亂。

直接就導致了,這兩種**(原碼、反碼)無法使用。

而且,由於零多佔用了一組**,那麼,所能表示的數字,必然就少一個。

如八位的原碼反碼,都不能表示-128。

【因此,用「取反加一」來求 0 和-128 補碼,都是不可能的!】

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

原碼反碼呢? 抱歉了,由於它們自身的混亂,它們都無法應用。

補碼的理論,**於數學的規律,並非是人為的胡編亂造。

所以,補碼中,就沒有違規的正負零。

零,在補碼中,只用唯一的一組**來表示,這就不會產生混亂。

那麼,0 和-128 的補碼,究竟都是怎麼求出來的?

補碼,有自己的定義式,與原碼反碼,並無任何關係。

當 x >=0: [x ]補碼 = x;

當 x < 0: [x ]補碼 = x + 2^n, n 是補碼的位數。

這定義式,是由數學理論推匯出來的,要比胡說八道的「取反加一」更準確嚴密。

按照定義式,0 和-128 的八位補碼,如下:

[ 0 ]補碼 = 0000 0000。

[-128]補碼 = 128 + 2^8 = 128 = 1000 0000 (二進位制)。

-128,如果用「取反加一」,可就難辦了。

因為,-128 並沒有原碼和反碼,拿什麼取反、拿什麼加一!

零的補碼,按照「取反加一」,也將是「負零的反碼+1」

那麼,[-0]補碼=0000 0000,符號,是正的嗎?

負零的符號位,竟然是 0 ! 這也是無法解釋的結果。

12樓:匿名使用者

計算機中減法器的成本是一個加法器的幾倍,所以計算機多采用加法,沒有減法,所以為結果正確,有了反碼《負數》、補碼《負數非的結果不一定正確》。但是零的原始碼和反碼都是它本身,貌似對零求補碼沒什麼必要。

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

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

什麼是微控制器的補碼,有什麼意義

計算機裡面,只有加法器,沒有減法器,減法,必須用加法來完成。對於 100 以內的十進位制數,減1 就可以用 加 99 代替。比如 25 1 24,可以寫成 25 99 1 24。限定了兩位數,1 和 99 是等效的。同樣,2,可以用 98 代替。它們之間,稱為 補數 100 稱為 模 對於 8 位二...

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

這是規定。補碼是為負數想出來的辦法,目的是減法可以用加補碼的方法實現,補碼可用反碼加1得來,於是又有了負數的反碼。計算機裡有硬體 加法器 有了補碼,減法也可以用加法器做了,計算機裡運算速度硬體遠快於軟體,這就是反碼,補碼和原碼多樣化的原因。正數的原碼 反碼 補碼,這是規定的,不是算的。如果,問的是負...