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盤品牌沒有自己...