Ⅰ 負數的補碼是它反碼加1,什麼意思就—62反=(11000001)2 -62補=(11000010)2解釋下~
-62的原碼是10111110,其反碼就是除去符號位不變(就是第一位,1表示的是負數,0表示的正數,如+62的原碼是00111110),之後的每一位取反,為11000001;進而在反碼的基礎上加1,為11000010。注意是二進制,滿2進一位。
對於0的反碼補碼和原碼稍微特殊些,有+0和-0之分,詳細的可以網路下。
Ⅱ 原碼、反碼、補碼
請我給你的詳解:原碼、補碼和反碼
(1)原碼表示法
原碼表示法是機器數的一種簡單的表示法。其符號位用0表示正號,用:表示負號,數值一般用二進制形式表示。設有一數為x,則原碼表示可記作〔x〕原。
例如,X1= +1010110
X2= 一1001010
其原碼記作:
〔X1〕原=[+1010110]原=01010110
〔X2〕原=[-1001010]原=11001010
原碼表示數的范圍與二進制位數有關。當用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〕補。
例如,[X1]=+1010110
[X2]= 一1001010
[X1]原=01010110
[X1]補=01010110
即 [X1]原=[X1]補=01010110
[X2] 原= 11001010
[X2] 補=10110101+1=10110110
補碼表示數的范圍與二進制位數有關。當採用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〕反。
例如:X1= +1010110
X2= 一1001010
〔X1〕原=01010110
[X1]反=〔X1〕原=01010110
[X2]原=11001010
[X2]反=10110101
反碼通常作為求補過程的中間形式,即在一個負數的反碼的未位上加1,就得到了該負數的補碼。
例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〕原
或者說:
數在計算機中是以二進制形式表示的。
數分為有符號數和無符號數。
原碼、反碼、補碼都是有符號定點數的表示方法。
一個有符號定點數的最高位為符號位,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。
假設有一 int 類型的數,值為5,那麼,我們知道它在計算機中表示為:
00000000 00000000 00000000 00000101
5轉換成二制是101,不過int類型的數佔用4位元組(32位),所以前面填了一堆0。
現在想知道,-5在計算機中如何表示?
在計算機中,負數以其正值的補碼形式表達。
什麼叫補碼呢?這得從原碼,反碼說起。
原碼:一個整數,按照絕對值大小轉換成的二進制數,稱為原碼。
比如 00000000 00000000 00000000 00000101 是 5的 原碼。
反碼:將二進制數按位取反,所得的新二進制數稱為原二進制數的反碼。
取反操作指:原為1,得0;原為0,得1。(1變0; 0變1)
比如:將00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 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 11111010 1 = 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
正數的原反補是一樣的
在計算機中,數據是以補碼的形式存儲的:
在n位的機器數中,最高位為符號位,該位為零表示為正,為1表示為負;
其餘n-1位為數值位,各位的值可為0或1。
當真值為正時:原碼、反碼、補碼數值位完全相同;
當真值為負時: 原碼的數值位保持原樣,
反碼的數值位是原碼數值位的各位取反,
補碼則是反碼的最低位加一。
注意符號位不變。
如:若機器數是16位:
十進制數 17 的原碼、反碼與補碼均為: 0000000000010001
十進制數-17 的原碼、反碼與補碼分別為:1000000000010001、1111111111101110、1111111111101111
Ⅲ 求 62的八位原碼的步驟
寫出二進制每位上基數,個位是1,高位是低位乘以2,寫8位為止
128,64,32,16,8,4,2,1 用這組數從高到低將62湊出來,用到的下面寫1,沒用到的寫0
__0,_0,_1,_1,1,1,1,0
62=32+30=32+16+14=32+16+8+4+2
所以62D=00111110B
Ⅳ 真值為-62的補碼是什麼
負數的補碼等於 對應正數的求補運算 ,假設你這個 -62 是十進制
62D 0011 1110B 取反 1100 0001 +1得到 1100 0010
1100 0010 就是 -62的補碼了
Ⅳ 寫出下列各數的原碼、補碼和反碼表示
求原碼、反碼和補碼,並不難,首先要弄清楚的是你需要多少空間來存儲這些數據。使用1位元組,還是2位元組。
還有就是為什麼要學補碼。
首先來說明為什麼學補碼?原因很簡單,就是為了不在計算機中使用減法。或者說通過補碼的表示,將減法變成加相反數的運算。
所以,這就說明了為什麼說正數的反碼、補碼和原碼相同,而偏偏要求負數的反碼和補碼。
下面求[0.1011]
的原碼、反碼及補碼。
假若使用1位元組,那麼[0.1011]的小數位1011,不足7位,需要補齊,為1011000,最高位為符號位,所以
原碼01011000
反碼01011000
補碼01011000
[-10110]不足7位,補齊為[-0010110],最高位為符號位,負數為1,所以
原碼:10010110
反碼:11101001
符號位不動,其他位取反
補碼:11101010
反碼加1
Ⅵ 十進制的原碼、補碼
十進制-67的原碼是01000011、反碼是10111100和補碼是10111101。
轉換規則:
1、負整數的原碼為二進制前面加符號位;
-67=1000011(二進制)=11000011(原碼)
2、負整數的反碼=原碼各位取反(除了符號位外);
11000011(原碼)=10111100(反碼)
3、負整數的補碼=負整數的反碼+00000001;
10111100(反碼)=10111101(補碼)
(6)62的源碼補碼擴展閱讀:
已知一個數的補碼,求原碼的操作其實就是對該補碼再求補碼:
⑴如果補碼的符號位為「0」,表示是一個正數,其原碼就是補碼。
⑵如果補碼的符號位為「1」,表示是一個負數,那麼求給定的這個補碼的補碼就是要求的原碼。
例:已知一個補碼為11111001,則原碼是10000111(-7)。
因為符號位為「1」,表示是一個負數,所以該位不變,仍為「1」。
其餘七位1111001取反後為0000110;再加1,所以是10000111。
Ⅶ 字長為8位時,求(-62)10的原碼,反碼和補碼
(-62)10的原碼:10111110
反碼:11000001
補碼:11000010
原碼表示法在數值前面增加了一位符號位(即最高位為符號位):正數該位為0,負數該位為1(0有兩種表示:+0和-0),其餘位表示數值的大小。
(7)62的源碼補碼擴展閱讀
原碼是有符號數的最簡單的編碼方式,便於輸入輸出,但作為代碼加減運算時較為復雜。一個字長為n的機器數能表示不同的數字的個數是固定的2^n個,n=8時2^n=256;用來表示有符號數,數的范圍就是 -2^(n-1)-1 ~ 2^(n-1)-1,n=8時,這個范圍就是 -127 ~ +127。
但是在不需要考慮數的正負時,就不需要用一位來表示符號位,n位機器數全部用來表示是數值,這時表示數的范圍就是0~2^n-1,n=8時這個范圍就是0~255.沒有符號位的數,稱為無符號數。
Ⅷ 什麼是格雷碼和補碼 62
格雷碼規則是使相鄰的二個數碼之間僅有一個二進制位不同。
十進制數 01,2,3,4,5,6,7,8,9 對應的格雷碼依次是:
0000,0001,0011,0010,0110,0111,0101,0100,1100,1101
---------------------------
補碼規則:正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。(原碼就是前面所介紹的二進制定點表示法,即最高位為符號位,「0」表示正,「1」表示負,其餘位表示數值的大小)。例如字長8位, [+62]補碼=[+62]原碼=01100010