原碼 反碼 補碼的基本概念,原碼 反碼和補碼錶示的規則分別是什麼?

2022-03-10 05:49:10 字數 7521 閱讀 3770

1樓:匡金後方

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

比如00000000

00000000

00000000

00000101是5的

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

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

0變1)

比如:將00000000

00000000

00000000

00000101每一位取反,得1111111111111111

11111111

11111010。

稱:11111111

11111111

11111111

11111010

是00000000

00000000

00000000

00000101

的反碼。

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

11111111

11111111

11111111

11111010

和00000000

00000000

00000000

00000101

互為反碼。

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

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

比如:00000000

00000000

00000000

00000101

的反碼是:11111111

11111111

11111111

11111010。

那麼,補碼為:

11111111

11111111

11111111

111110101=

11111111

11111111

11111111

11111011

所以,-5

在計算機中表達為:11111111

11111111

11111111

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

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

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

1、先取1的原碼:00000000

00000000

00000000

00000001

2、得反碼:

11111111

11111111

11111111

11111110

3、得補碼:

11111111

11111111

11111111

11111111

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

1100110011

原1011001100

反除符號位,按位取反

1011001101

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

2樓:沙裡波特

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

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

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

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

從而簡化計算機的硬體。

=====================

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

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

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

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

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

60,是分針的週期。

同理,三角函式的週期是 2π。那麼,

-π/2 處的函式值,就與(2π-π/2)= +3π/2 處相同。

------------

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

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

24-1 = 23

24 + 99 = (1) 23

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

於是,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 的補碼=0000 0111

-3的補碼=1111 1101

--相加-------------

得:  (1)0000 0100= 4 的補碼

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

------------

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

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

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

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

原碼、反碼和補碼錶示的規則分別是什麼?

3樓:沙裡波特

數字變成各種碼,見圖:

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

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

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

4樓:匿名使用者

一. 機器數和真值

在學習原碼, 反碼和補碼之前, 需要先了解機器數和真值的概念.

1、機器數

一個數在計算機中的二進位制表示形式, 叫做這個數的機器數。機器數是帶符號的,在計算機用一個數的最高位存放符號, 正數為0, 負數為1.

比如,十進位制中的數 +3 ,計算機字長為8位,轉換成二進位制就是00000011。如果是 -3 ,就是 10000011 。

那麼,這裡的 00000011 和 10000011 就是機器數。

2、真值

因為第一位是符號位,所以機器數的形式值就不等於真正的數值。例如上面的有符號數 10000011,其最高位1代表負,其真正數值是 -3

而不是形式值131(10000011轉換成十進位制等於131)。所以,為區別起見,將帶符號位的機器數對應的真正數值稱為機器數的真值。

例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1

二. 原碼, 反碼, 補碼的基礎概念和計算方法.

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

1. 原碼

原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其餘位表示值. 比如如果是8位二進位制:

[+1]原 = 0000 0001

[-1]原 = 1000 0001

第一位是符號位. 因為第一位是符號位, 所以8位二進位制數的取值範圍就是:

[1111 1111 , 0111 1111]

即[-127 , 127]

原碼是人腦最容易理解和計算的表示方式.

2. 反碼

反碼的表示方法是:

正數的反碼是其本身

負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反.

[+1] = [00000001]原 = [00000001]反

[-1] = [10000001]原 = [11111110]反

可見如果一個反碼錶示的是負數, 人腦無法直觀的看出來它的數值. 通常要將其轉換成原碼再計算.

3. 補碼

補碼的表示方法是:

正數的補碼就是其本身

負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 最後+1. (即在反碼的基礎上+1)

[+1] = [00000001]原 = [00000001]反 = [00000001]補

[-1] = [10000001]原 = [11111110]反 = [11111111]補

對於負數, 補碼錶示方式也是人腦無法直**出其數值的. 通常也需要轉換成原碼在計算其數值.

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

5樓:京安嫻邸暢

1):補碼加法公式

[x+y]補

=[x]補

+[y]補

2):補碼減法公式

[x-y]補

=[x]補-[y]補

=[x]補

+[-y]補

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

6樓:沙裡波特

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

只要掌握了補碼,即可。

小數補碼的定義式:

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

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

7樓:卓蕾逄蒼

1、原碼的定義

原碼錶示法是機器數的一種簡單的表示法。其符號位用0表示正號,用:表示負號,數值一般用二進位制形式表示。設有一數為x,則原碼錶示可記作[x]原。

①小數原碼的定義

[x]原=x

0≤x<11-x

-1<x≤

0例如:

x=+0.1011

,[x]原=

01011

x=-0.1011

[x]原=

11011

②整數原碼的定義

[x]原=x

0≤x<2n

2n-x-2n

<x≤0

原碼錶示數的範圍與二進位制位數有關。當用8位二進位制來表示小數原碼時,其表示範圍:

最大值為0.1111111,其真值約為(0.99)10

最小值為1.1111111,其真值約為(一0.99)10

當用8位二進位制來表示整數原碼時,其表示範圍:

最大值為01111111,其真值為(127)10

最小值為11111111,其真值為(-127)10

在原碼錶示法中,對0有兩種表示形式:

[+0]原=00000000

[-0]

原=10000000

2、補碼的定義

機器數的補碼可由原碼得到。如果機器數是正數,則該機器數的補碼與原碼一樣;如果機器數是負數,則該機器數的補碼是對它的原碼(除符號位外)各位取反,並在未位加1而得到的。設有一數x,則x的補碼錶示記作[x]補。

①小數補碼的定義

[x]補=x

0≤x<12+x

-1≤x<

0例如:

x=+0.1011,

[x]補=

01011

x=-0.1011,

[x]補=

10101

②整數補碼的定義

[x]補=x

0≤x<2n

2n+1+x-2n

≤x<0

補碼錶示數的範圍與二進位制位數有關。當採用8位二進位制表示時,小數補碼的表示範圍:

最大為0.1111111,其真值為(0.99)10

最小為1.0000000,其真值為(一1)10

採用8位二進位制表示時,整數補碼的表示範圍:

最大為01111111,其真值為(127)10

最小為10000000,其真值為(一128)10

在補碼錶示法中,0只有一種表示形式:

[+0]補=00000000

[+0]補=11111111+1=00000000(由於受裝置字長的限制,最後的進位丟失)

所以有[+0]補=[+0]補=00000000

3、反碼的定義

機器數的反碼可由原碼得到。如果機器數是正數,則該機器數的反碼與原碼一樣;如果機器數是負數,則該機器數的反碼是對它的原碼(符號位除外)各位取反而得到的。設有一數x,則x的反碼錶示記作[x]反。

反碼通常作為求補過程的中間形式,即在一個負數的反碼的未位上加1,就得到了該負數的補碼。

①小數反碼的定義

[x]反=x

0≤x<1

2-2n-1-x-1<

x≤0例如:

x=+0.1011

[x]反=

01011

x=-0.1011

[x]反=

10100

②整數反碼的定義

[x]反=x

0≤x<2n

2n+1-1-x-2n

<x≤0

例1.已知[x]原=10011010,求[x]補。

分析如下:

由[x]原求[x]補的原則是:若機器數為正數,則[x]原=[x]補;若機器數為負數,則該機器數的補碼可對它的原碼(符號位除外)所有位求反,再在未位加1而得到。現給定的機器數為負數,故有[x]補=[x]原十1,即

[x]原=10011010

[x]反=11100101十)1

[x]補=11100110

例2.已知[x]補=11100110,求[x]原。

分析如下:

對於機器數為正數,則[x]原=[x]補

對於機器數為負數,則有[x]原=[[x]補]補

現給定的為負數,故有:

[x]補=11100110

[[x]補]反=10011001十)1

[[x]補]補=10011010=[x]原

原碼,反碼,補碼是什麼補碼,原碼,反碼什麼的。有什麼作用啊!

正數的原碼,補碼,反碼相同,先求原碼,因為正數的原碼就是他的真值。負數的原碼是在正數的原碼基礎上,最高位置1,即符號位。然後再求反碼 符號位1不變,後面的所有位取反,然後再求補碼 在反碼的基礎上,末尾加1 注意負數的反碼,補碼除了符號位外也不是該負數的真值,而是原碼的除了最高位後面的數是真值的絕對值...

1的原碼,補碼,反碼是什麼0,1,1的原碼反碼補碼是什麼?8位二進位制整數

1 原碼錶示法 原碼錶示法是機器數的一種簡單的表示法。其符號位用0表示正號,用 表示負號,數值一般用二進位制形式表示。設有一數為x,則原碼錶示可記作 x 原。例如,x1 1010110 x2 一1001010 其原碼記作 x1 原 1010110 原 01010110 x2 原 1001010 原 ...

原碼,反碼,補碼及移碼存在的意義

反碼 解決負數加法運算問題,將減法運算轉換為加法運算,從而簡化運算規則 補碼 解決負數加法運算正負零問題,彌補了反碼的不足。總之,反碼與補碼都是為了解決負數運算問題,跟正數沒關係,因此,不管是正整數還是正小數,原碼,反碼,補碼都全部相同。總結 1 正數的原碼 補碼 反碼均為其本身 2 負數 二進位制...