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

2022-03-14 04:44:52 字數 6118 閱讀 4296

1樓:蒯淑蘭費琬

數在計算機中是以二進位制形式表示的。

數分為有符號數和無符號數。

原碼、反碼、補碼都是有符號定點數的表示方法。

一個有符號定點數的最高位為符號位,0是正,1是副。

以下都以8位整數為例,

原碼就是這個數本身的二進位制形式。

例如0000001

就是+1

1000001

就是-1

正數的反碼和補碼都是和原碼相同。

負數的反碼是將其原碼除符號位之外的各位求反

[-3]反=[10000011]反=11111100

負數的補碼是將其原碼除符號位之外的各位求反之後在末位再加1。

[-3]補=[10000011]補=11111101

一個數和它的補碼是可逆的。

為什麼要設立補碼呢?

第一是為了能讓計算機執行減法:

[a-b]補=a補+(-b)補

第二個原因是為了統一正0和負0

正零:00000000

負零:10000000

這兩個數其實都是0,但他們的原碼卻有不同的表示。

但是他們的補碼是一樣的,都是00000000

特別注意,如果+1之後有進位的,要一直往前進位,包括符號位!(這和反碼是不同的!)

[10000000]補

=[10000000]反+1

=11111111+1

=(1)00000000

=00000000(最高位溢位了,符號位變成了0)

有人會問

10000000這個補碼錶示的哪個數的補碼呢?

其實這是一個規定,這個數表示的是-128

所以n位補碼能表示的範圍是

-2^(n-1)到2^(n-1)-1

比n位原碼能表示的數多一個

又例:1011

原碼:01011

反碼:01011

//正數時,反碼=原碼

補碼:01011

//正數時,補碼=原碼

-1011

原碼:11011

反碼:10100

//負數時,反碼為原碼取反

補碼:10101

//負數時,補碼為原碼取反+1

0.1101

原碼:0.1101

反碼:0.1101

//正數時,反碼=原碼

補碼:0.1101

//正數時,補碼=原碼

-0.1101

原碼:1.1101

反碼:1.0010

//負數時,反碼為原碼取反

補碼:1.0011

//負數時,補碼為原碼取反+1

在計算機內,定點數有3種表示法:原碼、反碼和補碼

所謂原碼就是前面所介紹的二進位制定點表示法,即最高位為符號位,「0」表示正,「1」表示負,其餘位表示數值的大小。

反碼錶示法規定:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。

補碼錶示法規定:正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。

2樓:沙裡波特

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

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

因此,就不必關心它們了。

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

其變換規律,你看看圖,就可以自己摸索出來。

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

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樓:沙裡波特

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

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

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

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

6樓:匿名使用者

一. 機器數和真值

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

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]補

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

原碼,反碼,補碼的編碼規則?

7樓:洋星然偶瑤

關於原碼反碼補碼,您可以借本

《計算機組成原理》看看計算機中資料的表示形式。

首先更正下樓上的說法,正數的原碼反碼補碼都相同,即0011的反碼也為0011

!!切記

舉例來說:對於正數3,其二進位制形式為

0011,我們把

0011成為成為真值,在計算機中用0或1表示正負號,那麼

0011在計算機中原碼可以表示為00011(第一位為符號位)。反碼補碼不變。

對於負數,反碼即按位取反,比如10011可表示-3,10011為原碼,那麼符號位不變,其餘位按位取反即反碼11100.

補碼的存在是為了簡化計算的,其符號位一起參加運算,從而對於減法可轉化為加法。補碼的實質就是mod2。比如我們的鐘表是mod12的,那麼14點鐘我們也可以說是下午2點。

獲得補碼的方法是「按位取反,末位加1」那麼10011的補碼便是11101.。。。。。。。。。。

機器數即數值在計算機中的表示形式。

不知您明白了嗎?

8樓:匿名使用者

正數:原碼,補碼,反碼一致

負數:原碼:-(絕對值原碼)

反碼:原碼除符號位外取反

補碼:反碼+1

9樓:沙裡波特

計算機中,使用 1、0 構成各種**。

對於正負數字,只是使用【補碼】來儲存與計算。

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

補碼的編碼規則如下:

十進位制數字 0,其補碼就是:0000 0000。

-1,就是「零減一」,即:0000 0000-1。

用二進位制減法計算,可得:(1) 1111 1111。

機器數,只有 8 位,即:1111 1111 = 255(十進位制)。

這就是-1 的補碼。

繼續減一,可得-2 的補碼:1111 1110=254。

同理,-3 的補碼是:1111 1101 = 253。

求負數補碼的通用公式:-x 的補碼=256-x。

(其中的 256,是 2 的 8 次方。可用十進位制計算,有需要再轉二進位制。)

正數,不需要變換。

這就是補碼的編碼規則。

由此可見,補碼,與原碼反碼毫無關係。

計算機中,也並不使用原碼和反碼。

在原碼,反碼和補碼錶示法中,對0的表示有兩種形式分別是

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

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

8位二進位制原碼的表示範圍 127 1278位二進位制反碼的表示範圍 127 1278位二進位制補碼的表示範圍 128 127n位二進位制原碼和n位二進位制反碼 2 n 1 1 2 n 1 1 n位二進位制補碼 2 n 1 2 n 1 1。為什麼規定範圍 128到127?而不是規定其他範圍?因為8位...

請問U盤的VID和PID分別是什意思,為什麼對量產特別重要

u盤的vid和pid分別是指 vendor id 生產廠商id 和 product id 產品id u盤的主控晶片決定了用什麼量產工具。對於多數u盤來說,比如 金士頓 愛國者 聯想 紫光 臺電等等,主控晶片由第3方提供 u盤的vid,有的跟u盤品牌一樣,而有的跟主控晶片的 商一樣 當u盤品牌沒有自己...