源碼補碼
A. 原碼怎麼直接轉變為補碼
分兩種情況,以八位原碼轉換為例:
正數(符號位為0的數)補碼與原碼相同。
負數(符號位為1的數)變為補碼時符號位不變,其餘各項取反,最後在末尾+1
例如:原碼01100110,補碼為:01100110
原碼11100110,先變反碼:10011001,再加1變為補碼:10011010
B. 原碼+補碼=; 補碼補的是什麼
補碼=原碼取反+1;
原碼+補碼=原碼+原碼取反+1;
原碼+原碼取反=任意位為1(取決於位數);
再加上1後,則低位歸零,高位進1或溢出;
C. 原碼與補碼的轉換
1、首先要知道,換算規則:原碼轉換為反碼:符號位不變,數值位分別「按位取反」 。
D. 原碼 補碼
1.
補碼加法的公式是
[x]補+[y]補=[x+y]補
(mod 2) (2.17)
現分四種情況來證明。假設採用定點小數表示,因此證明的先決條件是
|x|<1, |y|<1, |x+y|<1。
(1)x>0,y>0,則x+y>0。
相加兩數都是正數,故其和也一定是正數。正數的補碼和原碼是一樣的,可得:
[x]補+[y]補=x+y=[x+y]補 (mod 2)
(2)x>0,y<0,則x+y>0或x+y<0。
相加的兩數一個為正,一個為負,因此相加結果有正、負兩種可能。根據補碼定義,
∵ [x]補=x, [y]補=2+y
∴ [x]補+[y]補=x+2+y=2+(x+y)
當x+y>0時,2 + (x+y) > 2,進位2必丟失,又因(x+y)>0,
故 [x]補+[y]補=x+y=[x+y]補 (mod 2)
當x+y<0時,2 + (x+y) < 2,又因(x+y)<0,
故 [x]補+[y]補=2+(x+y)=[x+y]補 (mod 2)
(3)x<0,y>0,則x+y>0或 x+y<0。
這種情況和第2種情況一樣,把x和y的位置對調即得證。
(4)x<0,y<0,則x+y<0。
相加兩數都是負數,則其和也一定是負數。
∵ [x]補=2+x, [y]補=2+y
∴ [x]補+[y]補=2+x+2+y=2+(2+x+y)
上式右邊分為」2」和(2+x+y)兩部分.既然(x+y)是負數,而其絕對值又小於1,那
么(2+x+y)就一定是小於2而大於1的數,進位」2」必丟失.又因(x+y)<0, 所以
[x]補+[y]補=2+(x+y)=[x+y]補 (mod 2)
2.
你說的是對的,兩種方法是一樣的,都對,我就不證明了
E. 原碼補碼怎麼轉化
分兩種情況:正數和負數.
如果機器數是正數,則該機器數的補碼與原碼一樣;
如果機器數是負數,則該機器數的補碼是對它的原碼(除符號位外)各位取反,並在未位加1而得到的。
希望可以幫到你.
F. 原碼和補碼是什麼意思
原碼,沒有任何意義。
補碼具有:用正數代替負數,把減法變成加法運算的功能。
這樣,計算機中,只需用一個加法器,便可進行加減運算了。
所以,在計算機中,只是使用補碼。根本就不用原碼和反碼。
對於鍾表,倒撥 4 小時,可用正撥 8 小時代替。
對於十進制數,減一,可以用 +99 代替。
比如:24-1 = 23
24 + 99 = (1) 23
忽略進位,只取低兩位,結果就是相同的。
這里用來代替負數的正數,就叫做「補數」。
計算機用二進制,就叫做「補碼」。
正數,直接運算即可,不用求補碼。
負數的補碼是:模+該負數。
八位二進制的模是:2 的 8 次方=256。
-1 的補碼,就是:256-1 =255 = 1111 1111(二進制)。
-2 的補碼,就是:256-2 =254 = 1111 1110(二進制)。
。。。。。。
-128 的補碼,就是:256-128 =128 = 1000 0000(二進制)。
求補碼,用公式就可得出,並不需要繞道原碼反碼符號位。
G. 知道 補碼,如何 計算 原碼
兩種計算方法:
演算法1: 補碼=原碼取反再加1的逆運算
10010110是補碼,應先減去1變為反碼,得10010101;
由反碼取得源碼即除符號位外其他為按位取反,得11101010,即十進制數的-106
演算法2:負數補碼速演算法,由最低位(右)向高位(左)查找到第一個1與符號位之間的所有數字按位取反的逆運算
10010110是補碼,符號位與最後一個1之間的所有數字按位取反,得11101010
兩種演算法得出同樣結果
H. 補碼10000000原碼是多少
無法用原碼表示,按照原碼定義,8位原碼所表示真值的范圍為:-127(11111111B)~+127(01111111B)。補碼10000000B的真值為-128,超出了8位原碼的表示範圍,所以無法用8位原碼表示。
數0的補碼表示是唯一的。
[+0]補=[+0]反=[+0]原=00000000;
[-0]補=11111111+1=00000000。
(8)源碼補碼擴展閱讀:
已知一個數的補碼,求原碼的操作其實就是對該補碼再求補碼:
1、如果補碼的符號位為「0」,表示是一個正數,其原碼就是補碼。
2、如果補碼的符號位為「1」,表示是一個負數,那麼求給定的這個補碼的補碼就是要求的原碼。
例:已知一個補碼為11111001,則原碼是10000111。
因為符號位為「1」,表示是一個負數,所以該位不變,仍為「1」。
其餘七位1111001取反後為0000110;再加1,所以是10000111。
網路-補碼
I. 原碼,補碼
1:我們來看一下補碼的求得過程:將原碼的各位取反,再加1,得到補碼。舉個例子,1001,它全部取反之後就是0110,再加1得到0111。將原碼與補碼加相,會得到10000。我們應該知道,計算機最基礎的運算器只能做加法,所以叫累加器,它做不了減法。所以當需要減法的時候我們取減數的補碼,用被減數去加這個補碼。如果是1111-1001=0110的話就相當於1111-(10000-0111)=1111
0111=0110,其中0111是1001的補碼。由於碼不像數字,碼是有位數的限制的,當有多於其位數的操作時是不表現出來的,所以減去一個數的原碼就相當於加上它的補碼。相信,看明白了這一條,第三個問題也就解決了。
2.規定……慣例的,當初就這么說的,反正二進制就兩個數,不是0就是1,取反就是對方。1比0大,正數比負數大……我是這樣想的,這一點我不敢肯定。
4.不記符號位的話,原碼
補碼=100...0(0的位數與原碼的位置一致),那你說這兩個碼是不是互為原補碼?取補碼之後再取一次補碼就是自身了。
J. 怎麼求補碼的原碼
已知一個數的補碼,求原碼的操作其實就是對該補碼再求補碼:
1、如果補碼的符號位為「0」,表示是一個正數,其原碼就是補碼。
2、如果補碼的符號位為「1」,表示是一個負數,那麼求給定的這個補碼的補碼就是要求的原碼。
例如:已知一個補碼為11111001,則原碼是10000111(-7)。因為符號位為「1」,表示是一個負數,所以該位不變,仍為「1」。
其餘七位1111001取反後為0000110;再加1,所以是10000111。
(10)源碼補碼擴展閱讀:
數的表示:
在數的表示上通過人為的定義來消除編碼映射的不唯一性,對轉換後的10000000強制認定為-128。當然對原碼和反碼也可以做這種強制認定,那為什麼原碼和反碼沒有流行起來?原碼和反碼沒有流行起來,是因為在數的運算上對符號位的處理無法用當時已有的機器物理設計來實現。
由於原碼和反碼在編碼時採用了硬性的人工設計,這種設計在數理上無法自動的通過模來實現對符號位的自動處理,符號位必須人工處理,必須對機器加入新的物理部件來專門處理符號位,這加大了機器設計難度,加大的機器成本,不到萬不得已,不走這條路。
參考資料:
網路--補碼