如何理解二進位制原碼,反碼,補碼,二進位制補碼運算

2023-06-14 06:40:12 字數 7403 閱讀 7162

1樓:沙里波特

帶符號數,有三種表示方法,即:原碼、反碼和補碼。

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

所以,在計算機系統中,原碼和反碼,都是不存在的。

使用補碼的意義:可以把減法或負數,轉換為加法運算。

因此,就能簡化計算機的硬體。

補碼的概念,來自於:補數。

比如鐘錶,時針轉一圈,週期是 12 小時。

那麼,倒撥 3小時,可以用正撥 9小時代替。

9,就是-3 的補數。 計算方法: 9 = 12-3。

同理,分針倒撥 x分,可以用正撥(60-x)代替。

60,是分針的週期。

懂得三角函式的同學,都知道,三角函式的週期是 2π。

那麼,在處的函式值是相同的,可互換。

演算法是:

當你使用兩位十進位制數:0~99,週期就是 一百。

那麼,減一,就可以用 +99 代替。

捨棄進製,這兩種演算法,功能就是相同的。

於是,99 就是 -1 的補數。

計算: 補數 = 週期 + 負數

對於其它負數,自己去求補數吧。

計算機中使用二進位制,補數,就改稱為【補碼】。

八位二進位制是:0000 0000~1111 1111。

相當於十進位制:0~255,週期就是 256。

那麼,-1,就可以用 255 = 1111 1111 代替。

所以:-1 的補碼,就是 1111 1111 = 255。

同理:-2 的補碼,就是 1111 1110 = 254。

繼續:-3 的補碼,就是 1111 1101 = 253。

最後:-128 的補碼,就是 1000 0000 = 128。

負數補碼的計算公式:【 256 + 這個負數 】。

式中的 256 = 2^8,是八位二進位制的週期。)

正數,並不存在補碼的問題。

所以,正數,並沒有補碼,可以直接運算。

也有人亂說:正數本身就是補碼。)

求解算式: 7-3 = 4。

計算機中,並沒有減法器,必須改用補碼相加。

列豎式如下:

7 的補碼=

3的補碼=

相加---得: (1)= 4 的補碼。

捨棄進製,只保留八位,結果完全正確。

借助於補碼,可以簡化計算機的硬體。

原碼和反碼,都沒有這種功能。

所以,在計算機中,根本就沒有原碼和反碼。

它們都是什麼? 就不用關心了。

2樓:敖秋英劍錦

1.基礎概念和計算方法。

在探求為何機器要使用補碼之前,讓我們先了解原碼,反碼和補碼的概念。對於乙個數,計算機要使用一定的編碼方式進行儲存。

原碼,反碼,補碼是機器儲存乙個具體數字的編碼方式。

二進位制數反碼和補碼的演算法

3樓:做而論道

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

在計算機中,原碼反碼,都是不存在的。

因此,原碼反碼,根本就沒有任何用處,不必討論。

補碼,實際上,它就是乙個「代替負數」的正數。

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

同時,也就沒有了減法運算。

因此,不但能簡化演算法,而且順便就能簡化計算機的硬體。

正數,怎麼能代替負數呢?

你看看兩位十進位制數(0~99)吧:

25 + 99 = 一百) 24

只要你捨棄進製,只保留兩位,+99 就能代替-1。

+99,這就是-1 的補數。

對應關係:補數=負數+計數週期(10^2 = 100)。

計算機中,使用二進位制,補數,也就改稱為:補碼。

8 位 2 進製數,其計數週期,就是:2^8 = 256。

-1 的補碼,就是:-1 + 256 = 255 = 1111 1111 (二進位制)。

對嗎? 分別用十進位制、二進位制,計算一下試試:

只要捨棄進製,這兩種演算法,結果,就是相同的。

同理,-2 補碼就是:254 = 1111 1110。

128 的補碼是:128 = 1000 0000。

零和正數,必須直接參加運算,不可變換。

零和正數,不需要變換,也就不存在「正數的補碼。

補碼的**和意義,就是這些。

你如果從「原碼反碼符號位」開始學補碼,肯定是「學不懂」的。

老外腦子不好用,週期、等效什麼的,當然也是搞不懂的。

因此,才編造了「原碼反碼。。。一大灘垃圾!

其實,那些都是無稽之談,隨口亂講的,並無任何理論依據。

而且,在八位的原碼反碼中,都沒有-128。

那麼,-128 的補碼,你們怎麼求呢?

4樓:道振梅理雲

計算機裡的二進位制數有八位、十六位等,下面以八位為例。

19的二進位制數為:0001

那麼+19原碼為。

反碼為。補碼為。

那麼-19原碼為。

左邊第一位表示正負數,正數為0,負數為1)反碼為。

補碼為。

5樓:敏印枝徭未

原碼:符號位:正數用0表示;負數用1表示。反碼:

除符號位外,其它位按位取反,即0變1,1變0補碼:

反碼的基本上加1

二進位制的原碼、反碼、補碼、移碼

6樓:做而論道

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

在計算機中,原碼和反碼,都是不存在的。

你只要掌握「數值與補碼」的互換,就可以了。

當碼長八位時:零和正數,不用變換。負數,加上 256,就是補碼了。

原碼反碼取反加一符號位不變,這些,都是幹什麼的呢?

老外數學不好,弄不出來轉換公式,才需要弄哪些個騷操作。

移碼,應用場合有限。

8位二進位制原碼 補碼 反碼的表示範圍各是多少 怎麼算的?

7樓:夢到雲淡風輕

8位二進位制原碼的表示範圍:-127~+1278位二進位制反碼的表示範圍:-127~+1278位二進位制補碼的表示範圍:

128~+127n位二進位制原碼和n位二進位制反碼:-2^(n-1)-1~+2^(n-1)-1;n位二進位制補碼:-2^(n-1)~+2^(n-1)-1。

8樓:

為什麼規定範圍-128到127?而不是規定其他範圍?因為8位數,除去一位符號位,每一位只有0或1,那就有128種情況,每種情況按權值計算,就是0到127,加上正負號,就是256個數,但是+0和-0取反加一後都是00000000,所以就是255個數,但是這樣就會剩下乙個10000000什麼都不表示,但是10000000如果看作無符號數就是128,而且第一位是1,所以用來表示-128。

知道了嗎?不要動不動就說規定的,任何事存在就有它的道理。

9樓:做而論道

這些範圍,不是算的,是規定的。

10樓:誕淚木

8位二進位制。

原碼的表示範圍:

127【1,1111111】~-0【1,000000】加上+127【0,1111111】~+0【0,0000000】

一共256位。

8位二進位制反碼的表示範圍:

127【1,1111111】~-0【1,000000】加上+127【0,1111111】~+0【0,0000000】

一共256位。

8位二進位制補碼的表示範圍:根據溢位進製拋棄-0(原碼)【1,000000】(的補碼)【0,0000000】= 0(原碼)【0,0000000】(的補碼)【0,00000000】向重合了,所以有位。(記住有256個)

所以剩下個補碼【1,0000000】沒有原碼。所以規定為(就好像做題時設x,代表變數一樣)-128位其原碼。

二進位制的原碼、補碼、反碼詳解

11樓:象拔蚌燒賣

計算機中,並沒有原碼和反碼,只是使用補碼,代表正負數。

使用補碼的意義:可以把減法或負數,轉換為加法運算。從而簡化計算機的硬體。

比如鐘錶,時針轉一圈,週期是 12 小時。

倒撥 3 小時,可以用正撥 9 小時代替。

9,就稱為-3 的補數。

計算方法:12-3 = 9。

對於分針,倒撥 x 分,就可以用正撥 60-x 代替。

如果,限定了兩位十進位制數 (0~99),週期就是 100。

那麼,減一,就可以用 +99 代替。

忽略進製,只取兩位數,這兩種演算法,結果就是相同的。

於是,99 就是 -1 的補數。

其它負數的補數,大家可以自己求!

求出了負數的補數,就可用加法,代替減法了。

計算機中使用二進位制,補數,就改稱為【補碼】。

常用的八位二進位制是:0000 0000~1111 1111。

它們代表了十進位制:0~255,週期就是 256。

那麼,-1,就可以用 255 = 1111 1111 代替。

所以:-1 的補碼,就是 1111 1111 = 255。

同理:-2 的補碼,就是 1111 1110 = 254。

繼續:-3 的補碼,就是 1111 1101 = 253。

最後:-128,補碼是 1000 0000 = 128。

計算公式:負數的補碼=256+這個負數。

正數,直接運算即可,不需要求補碼。

也可以說,正數本身就是補碼。

補碼的應用如: 7-3 = 4。

用補碼的計算過程如下:

7 的補碼=0000 0111

3的補碼=1111 1101

相加---得: (1) 0000 0100 = 4 的補碼。

捨棄進製,只保留八位,作為結果即可。

這就是:使用補碼,加法就代替了減法。

所以,在計算機中,有乙個加法器,就夠用了。

原碼和反碼,都沒有這種功能。

原碼和反碼,毫無用處。計算機中,根本就沒有它們。

12樓:黑科技

在計算機中所有的資料都是以二進位制儲存的。

中機器數中,使用最高位來表示數字的**:1為負,0為正;

乙個字長為8為。

單看1000 0011這個數,不知道是機器數還是二進位制數,所以引出了機器數的真值概念。

機器數的真值就是機器數所對應的真值的數值;

如:1000 0011 = 3;

符號位:首先確定乙個數的正負,如果是正數,首位使用0表示,如果是負數,首位用1表示。

有效位:真值的絕對值轉化為二進位制形式。

符號為和有效位拼接到一起。

正數:正數的反碼和原碼相同。 +3 :0000 0011【原碼】 0000 0011【反碼】

負數:符號位不變,其餘各位直接取反,二進位制只有兩種狀態:1->0;0->1; -3:

1000 0011【原碼】 1111 1100【反碼】

正數:正數的原碼反碼補碼全部相同 +3: 0000 0011【原碼】 0000 0011【反碼】 0000 0011【補碼】

負數:求得原碼,再求反碼,中最後一位+1,這就是負數的補碼 -3:1000 0011【原碼】 1111 1100【反碼】 1111 1101【補碼】

反碼:中沒有計算機的時候只設計了加法器,沒有減法器,使用加法計算來表示減法,補碼:反碼解決了沒有減法的問題,但是會出現絕對值相同的正負兩個數相加會出現-0情況,那麼在計算機中不能出現0的表現不唯一情況,所以採用補碼進行修正。

注】1、採用補碼計算; 2、正數補碼、反碼、原碼相同; 3、負數首位符號位為1;

例:正數相加

例:減法(可以看做負數相加)

56為正數,補碼和原始碼一樣,求出-33的補碼,然後將兩個數的補碼相加得出結果。

正數:補碼=反碼=原碼。

負數:補碼的補碼(首位不變,其餘取反,再加1)

正數:不變(原碼 = 反碼= 補碼)

負數:首位不變,其餘取反。

二進位制補碼怎麼計算的

1 正數的補碼表示 正數的補碼 原碼 負數的補碼 or 以十進位制整數 97和 97為例 97原碼 0110 0001b 97補碼 0110 0001b 97原碼 1110 0001b 97補碼 1001 1111b 2 純小數的原碼 純小數的原碼如何得到呢?方法有很多,在這裡提供一種較為便於筆算的...

二進位制補碼運算溢位判斷,計算機中二進位制加減法時,是如何判斷溢位的?

補碼運算的溢位判別方式為雙高位判別法,利用cs表示符號位是否進製,利用cp表示最高數值位是否進製。如果cs cp的結果為真,則代表發生了溢位 運算結果大於0則為負溢位,小於0則為正溢位 否則運算結果正確。例如 1000 0011 補碼為 3,原碼為 125 0000 0011 補碼為3,原碼為3 1...

十進位制轉二進位制原理,十進位制轉二進位制的這方法的數學原理是什麼啊?求大神詳解!

用2輾轉相除至結果為1 將餘數和最後的1從下向上倒序寫 就是結果 例如302 302 2 151 餘0 151 2 75 餘1 75 2 37 餘1 37 2 18 餘1 18 2 9 餘0 9 2 4 餘1 4 2 2 餘0 2 2 1 餘0 故二進位制為100101110 二進位制轉十進位制 從...