已知原碼為10000010求他的反碼和補碼

2022-02-28 07:11:45 字數 6422 閱讀 1877

1樓:刃轉雲襲

如果是8位匯流排機器,反碼11111101,補碼11111110

給你個參考:

[真值]:數值絕對值的二進位制數再加上符號,如3的真值為11、-3的真值為-11。

[原碼]:符號位(即最高位0正1負)加真值絕對值,真值絕對值若超出儲存長度,超出部分丟失,

正數的原碼為其本身。

[反碼]:正數的反碼同其原碼,負數的反碼為其原碼除符號位外其他位按位取反。

[補碼]:正數的補碼同其原碼,負數的補碼為其真值絕對值按位取反再加1。

特注:1、整數x原碼求法——>x=x (當0<=x<=2^n-1時), x=2^n-x (當-2^n<=x<0時);

整數x反碼求法——>x=x (當0<=x<=2^n-1時), x=2^(n+1)-1-|x| (當-2^n<=x<=0時);

整數x補碼求法——>x=x (當0<=x<=2^n-1時), x=2^(n+1)+x (當-2^n<=x<0時);

在這些計演算法則中,n+1就是機器的字長;

2、整數補碼的計算符合「模2^(n+1)運算」(n+1為機器字長),何謂「模2^(n+1)運算」(除

2^(n+1)求餘),對於 n+1字長機器來說,其能儲存的整數範圍是-2^n~2^n-1,對應二

進位制的數值範圍是0 ~2^(n+1)-1,若 將一個時鐘盤刻度進行2^(n+1)等分,自零點位起

順時針依次標記刻 度直至2^(n+1)-1,那 麼任意一個整數自零點位起或順時針(正號)或

逆時針(負號)走過其絕對值對應的行程,最終走到的刻度就是其補碼,由此也可以得

出,若兩個整數的差的絕對值是2^(n+1)的倍數, 那麼這兩個整數的補碼必定相同;

3、由第2點也可以得出,若一個16位有符號整型資料超出其儲存範圍(-2^15~2^15-1或

-32768~32767),那麼用這個整型資料一直加或一直減2^16(65536),直到得出的數

值在其儲存範圍內,此時得出的數值的補碼與這個整型資料 的補碼相同;

4、計算機通常以補碼形式儲存整型資料,此時兩個有符號整型資料相減可用其補碼相加

得出結果,這是由溢位現象導致的,從第2點所得出的時鐘盤很容易驗證這一點,比如

對16字長機器來說,6-3原本是在6點位逆時針跑3步,但是因為-3和65533補碼相同,

這時就可以在6點位順時針跑65533步到65539點位,此時已經跑過一圈,65539減去

一圈的數值65536就是3,所以6-3=3;

5、負數的補碼還有一種定義——負數的的補碼為其反碼加1;這種定義只適用於其儲存範

圍內的數,若超出儲存範圍,那麼這種定義不適用,比如對16字長機器來說,-65535

按這種方法得出的補碼與-32767相同,但實際上這兩個數的補碼並不相同。

另附:純小數(-1《純小數<1)補碼的計算符合「模2運算」,「模2運算」的說明可參考以上第2點,即

將小數除以2求餘數,只不過這裡的餘數含小數部分;因為2經模2運算後結果為0,所以對

於負值純小數,可加2後再進行模2運算得出對應值(也就是其補碼)。

2樓:亞平寧的惡來

8位二進位制表示的有符號數中,首位為符號位,0為正,1為負。其餘7位為數字的真值

負數的補碼:符號位不變,其餘按位取反。

得到:1111 1101

補碼=反碼+1=1111 1110

3樓:

反碼:11111101

補碼:11111110

怎麼求補碼的原碼?

4樓:橘子閃爍

已知一個數的補碼,求原碼的操作其實就是對該補碼再求補碼:

1、如果補碼的符號位為「0」,表示是一個正數,其原碼就是補碼。

2、如果補碼的符號位為「1」,表示是一個負數,那麼求給定的這個補碼的補碼就是要求的原碼。

例如:已知一個補碼為11111001,則原碼是10000111(-7)。因為符號位為「1」,表示是一個負數,所以該位不變,仍為「1」。

其餘七位1111001取反後為0000110;再加1,所以是10000111。

5樓:狼道刀

以補碼10010110為例,有兩種計算方法求原碼:

演算法1:

補碼=原碼取反再加1的逆運算。

10010110是補碼,應先減去1變為反碼,得10010101;

由反碼取得原始碼即除符號位外其他為按位取反,得11101010,即十進位制數的-106。

演算法2:

負數補碼速演算法,由最低位(右)向高位(左)查詢到第一個1與符號位之間的所有數字按位取反的逆運算

10010110是補碼,符號位與最後一個1之間的所有數字按位取反,得11101010

擴充套件資料

計算機系統中的補碼和原碼:

在計算機系統中,數值一律用補碼來表示和儲存。原因在於,使用補碼,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理。此外,補碼與原碼相互轉換,其運算過程是相同的,不需要額外的硬體電路。

原碼(true form)是一種計算機中對數字的二進位制定點表示方法。原碼錶示法在數值前面增加了一位符號位(即最高位為符號位):正數該位為0,負數該位為1(0有兩種表示:

+0和-0),其餘位表示數值的大小。原碼不能直接參加運算,可能會出錯。

例如數學上,1+(-1)=0,而在二進位制中00000001+10000001=10000010,換算成十進位制為-2。顯然出錯了。

6樓:炸毛什造

已知一個數的補碼,求原碼的操作分兩種情況:

(1)如果補碼的符號位為「0」,表示是一個正數,所以補碼就是該數的原碼。

(2)如果補碼的符號位為「1」,表示是一個負數,求原碼的操作可以是:符號位為1,其餘各位取反,然後再整個數加1。

例如,已知一個補碼為11111001,則原碼是10000111(-7):因為符號位為「1」,表示是一個負數,所以該位不變,仍為   「1」;其餘7位1111001取反後為0000110;再加1,所以是10000111。

7樓:美食藝術

補碼的運算:聽老師講解真值、原碼、反碼和補碼

8樓:

9碼的原始碼他們這些人馬,數值對比都是有很大的差距。

9樓:沙裡波特

對於二進位制數來說,取反加1、減1取反,結果是完全相同的。

所以,可以使用同樣的方法來做。

甚至,求補碼時,你也可以用「減1取反」,一點也沒毛病。

10樓:藍雨

補碼的補碼就是原碼!

帶符號數中只有負數的原碼反碼和補碼是不一樣的,正數的這些都是一樣的,涉及碼制轉換!

原碼求補碼是取反加1

補碼求原碼還是是取反加1(符號位除外)

11樓:匿名使用者

有符號數,最高位為1的話除最高位之外取反加1即為原始碼,正數不變

12樓:匿名使用者

如果是帶符號的數,那麼看它的最高位,如果是1,則是負數,符號位不變,減一後取反碼。

是正數就不變。它的補碼就是它的原始碼

原碼=補碼-1後的反碼

13樓:匿名使用者

就是對補碼求補碼,你可以試試!

+0或者-0的原始碼、反碼、補碼

14樓:自己的少爺

[+0]原碼=0000 0000,   [-0]原碼=1000 0000

[+0]反碼=0000 0000,   [-0]反碼=1111 1111

[+0]補碼=0000 0000,   [-0]補碼=0000 0000

補碼沒有正0與負0之分。正數的反碼、補碼和其原始碼相同,負數的反碼是其原始碼,除符號位外其他位取反負數的補碼是取其反碼後加1。

詳細釋義:

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

(一)反碼錶示法規定:

1、正數的反碼與其原碼相同;

2、負數的反碼是對正數逐位取反,符號位保持為1;

(二)對於二進位制原碼10010求反碼:

((10010)原)反=對正數(00010)原含符號位取反= 反碼11101 (10010,1為符號碼,故為負)

(11101) 二進位制= -2 十進位制

(三)對於八進位制:

舉例 某linux平臺設定了預設的目錄許可權為755(rwxr-xr-x),八進位制表示為0755,那麼,umask是許可權位755的反碼,計算得到umask為0022的過程如下:

原碼0755= 反碼 0022 (逐位解釋:0為符號位,0為7-7,2為7-5,2為7-5)

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

擴充套件資料

轉換方法

由於正數的原碼、補碼、反碼錶示方法均相同,不需轉換。在此,僅以負數情況分析。

(1) 已知原碼,求補碼。

例:已知某數x的原碼為10110100b,試求x的補碼和反碼。

解:由[x]原=10110100b知,x為負數。求其反碼時,符號位不變,數值部分按位求反;求其補碼時,再在其反碼的末位加1。

1 0 1 1 0 1 0 0 原碼

1 1 0 0 1 0 1 1 反碼,符號位不變,數值位取反

1 +1

1 1 0 0 1 1 00 補碼

故:[x]補=11001100b,[x]反=11001011b。

(2) 已知補碼,求原碼。

分析:按照求負數補碼的逆過程,數值部分應是最低位減1,然後取反。但是對二進位制數來說,先減1後取反和先取反後加1得到的結果是一樣的,故仍可採用取反加1 有方法。

例:已知某數x的補碼11101110b,試求其原碼。

解:由[x]補=11101110b知,x為負數。

採用逆推法

1 1 1 0 1 1 1 0 補碼

1 1 1 0 1 1 0 1 反碼(末位減1)

1 0 0 1 0 0 1 0 原碼(符號位不變,數值位取反)

15樓:

0原碼是00000000

-0原碼是10000000

0反碼是00000000

-0反碼是11111111

0補碼是00000000

補碼沒有正0與負0之分

正數的反碼、補碼和其原碼相同負數的反碼是其原碼除符號位外其他位取反負數的補碼是取其反碼後加1。

16樓:格子裡兮

[+0]原碼=0000 0000,   [-0]原碼=1000 0000

[+0]反碼=0000 0000,   [-0]反碼=1111 1111

[+0]補碼=0000 0000,   [-0]補碼=0000 0000

你會發現,+0和-0的補碼是一樣的。即 0的補碼只有一種表示。

這裡解釋一下[-0]補碼是怎麼得來的。

負數的補碼就是反碼整體加一。符號位上的進位捨棄。(所以,捨棄了符號位的補碼的第一位是數值位,不是符號位,符號位捨棄了)

另外解釋一下原碼符號位和補碼符號位的關係,補碼的符號位不是保持原碼的第一位不變,而是 符號位不變,[-0]反碼的第一個1是符號位,尾數中的7個1是數值位,尾數加一後,數值位產生了進位,1111 1111+1=1 0000 0000(計算補碼的過程中,並不是先保證第一位不變,而是保證符號位不變,保證補碼規則是反碼整體加一)。

所以,補碼能表示的數的個數中,比原碼反碼少了一個,所以補碼可以多表示一個真值為-128的數。

但是,多表示的這個數-128比較特殊,只有原碼和補碼,沒有反碼。

-128的補碼是1000 0000。128的補碼為什麼是1000 0000。因為8位二進位制的原值表達範圍為:

-127至127,共有256個組合序列 0000 0000 至1111 1111 。+128的原值在8位中是表達不出來的。

數值在計算機中是以補碼的方式儲存的,在探求為何計算機要使用補碼之前, 讓我們先了解原碼, 反碼和補碼的概念。

對於一個數, 計算機要使用一定的編碼方式進行儲存。 原碼, 反碼, 補碼是計算機儲存一個具體數字的編碼方式。

一個數在計算機中的二進位制表示形式, 叫做這個數的機器數。

機器數是帶符號的,在計算機用一個數的最高位存放符號, 正數為0, 負數為1。比如,十進位制中的數 +2 ,計算機字長為8位,轉換成二進位制就是[00000010]。如果是 -2 ,就是 [10000010] 。

因為第一位是符號位,所以機器數的形式值就不等於真正的數值。例如上面的有符號數 [10000010],其最高位1代表負,其真正數值是 -2 而不是形式值130([10000010]轉換成十進位制等於130)。

所以將帶符號位的機器數對應的真正數值稱為機器數的真值。

1已知x,y為實數,且y,已知X,Y為實數,且Y根號下X12根號下12X

1 解 dux 1 2 0,1 2 x 0 x 1 2 y 1 2 zhi原式dao 5 2 1 1 1 2 1 2 2 解 題意得 專 x xy 1 2 3 xy 1 2 15y 屬x 2 2 xy 15 y 2 0 x 5 y x 3 y 0 x 5 y 0 x 25y 原式 50y 5y 3y...

已知“a,b,c,d,e,f”為“1,2,3,4,5,6”的

分析題意,得出結論為 a,b 包含於 c,d e,f 首先對於類似 a,b 可能是 b,a 這種,有23 8種情況 包括cd dc ef fe 由於是 c,d e,f 我們考慮一下這兩個區間的關係 無外乎分離 交叉 包含3種 分離 此時ab只能在cd內部,或者在ef內部 再考慮到cd ef誰左誰右,...

設機器的字長為8位十進位制34的原碼補碼反碼是

正數的原碼,補碼及反碼都是相同的,所以 原碼 00100010 補碼 00100010 反碼 00100010 假設某計算機的機器數為8位,分別寫出十進位制數 38和 38的原碼,反碼和補碼?x 38 10 0110b x 原 x 反 x 補 0010 0110b y 38d 10 0110b y ...