原碼 反碼 補碼的理解,原碼 反碼 補碼的基本概念

2023-07-15 23:56:26 字數 7360 閱讀 5246

1樓:做而論道

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

原碼和反碼,都是不用的。

所謂的【補碼】,實際上,是一個「代替負數做運算」的正數。

因為,使用了正數(即補碼)代替了負數,所以,在計算機中,也就沒有了減法運算。

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

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

所以,它們在計算機中,都是不存在的。

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

2 位 10 進位制,數值範圍是:0 ~ 99。

計數週期是:10^2 = 100。

那麼,有:25 - 1 = 24

25 + 99 = 一百) 24

進位值,就是計數週期 100。

你只要捨棄進位,取 2 位數,+99 就可以代替-1 了。

同理,+98 也可以代替-2。

這些正數,就稱為:負數的補數

如果你用三位十進位制數,-1 的補數就是 +999 了。

求補數的公式: 補數 = 負數 + 10^n。

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

8 位 2 進位制數,計數週期是:2^8 = 256。

1 的補碼,就是:-1 + 256 = 255

1111 1111 (二進位制)。

2 的補碼是:254 = 1111 1110。

128 的補碼是:128 = 1000 0000。

以上就是 128 個負數的補碼。

正數,本身就是正數,必須直接參加運算,不可變換。

所以,正數,根本就沒有補碼。

舉例,用補碼計算:7 - 5 = 2。

5]補 =

相加

得: (1)

你只要捨棄進位,這就可以用加法,實現減法運算。

如果,你不捨棄進位呢?

那不就多出來一位嗎!

那就不是用補碼運算了。

進位 1,這就是 256。

這個演算法,就是:7 + 251 = 258。

用公式來求補碼,簡單方便。而且,你還能理解「補碼的意義」。

原碼反碼、取反加。

一、符號位,這些都是怎麼回事?

老外數學不好,也就只能用這些笨辦法了。

原碼、反碼、補碼的基本概念

2樓:匡金後方

原碼:一個整數,按照絕對值大小轉換成的二進位制數,稱為原碼。

比如00000000

00000101是5的。

原碼。反碼:將二進位制數按位取反,所得的新二進位制數稱為原二進位制數的反碼。

取反操作指:原為1,得0;原為0,得1。(1變0;

0變1)比如:將00000000

00000101每一位取反,得1111111111111111

稱:11111111

是00000000

的反碼。反碼是相互的,所以也可稱:

和00000000

互為反碼。補碼:反碼加1稱為補碼。

也就是說,要得到一個數的補碼,先得到反碼,然後將反碼加上1,所得數稱為補碼。

比如:00000000

的反碼是:11111111

那麼,補碼為:

所以,-5在計算機中表達為:11111111

11111011。轉換為十六進位制:0xfffffffb。

再舉一例,我們來看整數-1在計算機中如何表示。

假設這也是一個int型別,那麼:

1、先取1的原碼:00000000

2、得反碼:

3、得補碼:

正數的原碼,補碼,反碼都相同,都等於它本身負數的補碼是:符號位為1,其餘各位求反,末位加1反碼是:符號位為1,其餘各位求反,但末位不加1也就是說,反碼末位加上1就是補碼。

原1011001100

反除符號位,按位取反。

補除符號位,按位取反再加1

3樓:沙裡波特

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

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

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

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

從而簡化計算機的硬體。

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

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

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

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

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

60,是分針的週期。

同理,三角函式的週期是 2π。那麼,在-π/2 處的函式值,就與(2π-π2)= 3π/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 的補碼。

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

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

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

所以,在計算機中,根本就沒有它們。

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

什麼是原碼、反碼、補碼?

4樓:京安嫻邸暢

1):補碼加法公式。

x+y]補。

x]補。[y]補。

2):補碼減法公式。

x-y]補。

x]補-[y]補。

x]補。[-y]補。

其中:[-y]補稱為負補,求負補的辦法是:對補碼的每一位(包括符合位)求反,且未位加1.

5樓:沙裡波特

計算機中,只有補碼,沒有原碼反碼。

只要掌握了補碼,即可。

小數補碼的定義式:

x]補 = x ; 0 ≤ x < 1[x]補 = 2+x ; 1 ≤ x < 0例如:x = 1000, 則 [x]補 = 0010 1000。

x = 1000, 則 [x]補 = 1100 1000。

原碼,反碼,補碼的定義是什麼。

6樓:沙裡波特

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

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

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

想要理解補碼,要先從補數開始。

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

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

9 就是-3 的補數。 9 = 12-3。

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

60 是分針的週期。

對於兩位十進位制 0~99,週期就是一百。

這時,減一,你就可以用 +99 代替。

結果取兩位,捨棄進位。這兩種演算法,功能就是相同的。

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。

有了補碼,計算機僅需要一個加法器,就可以加減通用了。

而原碼和反碼,不具備這種能力。

所以,原碼和反碼,究竟是怎麼定義,就不必關心了。

因為,它們,毫無用處。

7樓:沐閔馬佳晉

原碼:在數值前直接加一符號位的表示法。對於8位二進位制來說:+7]原=

7]原=反碼:正數的反碼與原碼相同。

負數的反碼,符號位為「1」,數值部分按位取反。+7]反=

7]反=補碼:正數的補碼和原碼相同。

負數的補碼則是符號位為「1」,數值部分按位取反後再在末位(最低位)加1。也就是「反碼+1」。+7]補=

7]補=

原碼、反碼和補碼

8樓:沙裡波特

帶符號的數字,可變成各種**,見圖:

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

只有補碼,才是實用的編碼。

其變換規律,可以自己摸索出來。

9樓:做而論道

補碼,其實,就是一個【代替負數進行運算】的正數。

用補碼代替負數之後,計算機中,就不存在負數了。

隨之而來的是,計算機中,也就沒有減法運算了。

即:藉助於補碼,能夠簡化運算。也就可以簡化硬體。

補碼(一個正數),怎麼就能「代替負數」呢?

且看 2 位 10 進位制的運算:

28 + 99 = 一百) 27

只要忽略進位(10^2),+99 和-1 的功能,就是相同的。

此時,就稱 +99 是-1 的補數。

同理,+98 就是-2 的補數。

求補數的計算公式,你也可以推匯出來:

補數 = 負數 + 10^n, n 是補數的位數。

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

對於 8 位 2 進位制來說,應按照如下公式來求補碼:

計算公式: 補碼= 負數 + 2^n, n 是補碼的位數。

8 位 2 進位制,總共可以構成 2^8 = 256 組補碼。

其中,包括有 128 個負數的補碼。

如下:[-1]補 = 2^8-1 = 255 = 1111 1111 (二進位制)。

2]補 = 2^8-2 = 254 = 1111 1110 (二進位制)。

128]補 = 256-128 = 128 = 1000 0000。

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

所以,正數,不存在補碼。

原碼和反碼,都沒有簡化硬體的功能。

所以,計算機中,只用補碼,根本就不用原碼和反碼。

求補碼,千萬不要走「原碼反碼符號位取反加一」這條路。

否則,你就不會知道: 何? 為? 補? 碼?

用八位補碼計算:7-5 = 2。

5]補 =

相加

進位,是超出 8 位的,捨棄即可。

由此次計算,也可以看到:

使用了補碼,減法,就轉換成了加法。

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

所以,計算機中,根本就沒有它們的影子。

240的原碼,反碼,補碼 250的原碼,反碼 補碼各是什麼

240是正數 所以原碼,補碼,反碼都是一樣的 為 0000 0000 1111 0000,250是負數,最高位代表1代表負數,為 原碼 1000 0000 1111 1010,反碼 1111 1111 0000 0101,補碼 1111 1111 0000 0110 原碼就是這個數的二進位制碼 反碼...

1的原碼,反碼,補碼,移碼是什麼

原碼 1000 0001 反碼抄 1111 1110 補碼 1111 1111 移碼 0111 1111 我多內容了 補碼相對於原碼 反碼可以多表示一個數,因為反碼和原碼中 0 有兩種表示方法,而補碼只有一種。在小數情況下,多表示一個數 表現出來就是能表示 1。這個內容因為比較重要,是個專業點的教材...

整數的原碼反碼補碼是什麼意思

整數的原碼 反碼 補碼是十進位制數在機器裡面的二進位制表示方式。在計算機內,定點數有3種表示法 原碼 反碼和補碼。所謂原碼就是前面所介紹的二進位制定點表示法,即最高位為符號位,0 表示正,1 表示負,其餘位表示數值的大小。反碼錶示法規定 正數的反碼與其原碼相同 負數的反碼是對其原碼逐位取反,但符號位...