就比如-9補碼是11110111。
9的源碼為00001001,如果是負數的話,補碼為最高位置1,其餘取反也就是11110110,然後在最低位加1即可即11110111。
計算機中的負數是以其補碼形式存在的補碼=原碼取反+1。
一個位元組有8位可以表示的數值范圍在-128到+127。用二進製表示也就是10000000-01111111(注意:最高位表示符號)。最高位是1的都是負數最高位是0的都是正數。
(1)補碼相乘計算方法擴展閱讀:
補碼乘法
補碼的乘法不具備【X*Y】補=【X】補×【Y】補的性質。但是【X*Y】補==【X】補×Y,所得結果再取補碼,如薯衫x=101,y=011,[x*y]補禪手卜=-[(-101)*011]=-[011*011]=-01001=10111。
其中,若【Y】補=y31y30……y0,則Y=-y31*2^31+y30*2^30+……+y0*2^0
原碼表示法在數值前面增加了一位符號位(即最高位為符號位):正數該位為賀穗0,負數該位為1(0有兩種表示:+0和-0),其餘位表示數值的大小。
Ⅱ 舉一個計算機補碼計算的例子,以及怎麼計算
運用:在計算機系統中,數值一律用補碼來表示和存儲。原因在於,使用補碼,可以將符號位和數值域統一處理。
計算
1、正數
正整數的補碼是其二進製表示,與原碼相同。
例如:+9的補碼是00001001。(備註:這個+9的補碼是用8位2進制來表示的,補碼表示方式很多,還有16位二進制補碼表示形式,以及32位二進制補碼表示形式,64位進制補碼表示形式等。每一種補碼表示形式都只能表示有限的數字。)
2、負數
求負整數的補碼,將其原碼除符號位外的所有位取反(0變1,1變0,符號位為1不變)後加1。
同一個數字在不同的補碼表示形式中是不同的。比如-15的補碼,在8位二進制中是11110001,然而在16位二進制補碼表示中,就是1111111111110001。以下都使用8位2進制來表示。
例如:求-5的補碼。-5對應正數5(00000101)→所有位取反(11111010)→加1(11111011)。所以-5的補碼是11111011。
3、0的補碼
[+0]補=[+0]反=[+0]原=00000000
[ -0]補=11111111+1=00000000
(2)補碼相乘計算方法擴展閱讀
補碼乘法
補碼的乘法不具備【X*Y】補=【X】補×【Y】補的性質。但是【X*Y】補==【X】補×Y,所得結果再取補碼,如x=101,y=011,[x*y]補=-[(-101)*011]=-[011*011]=-01001=10111。
其中,若【Y】補=y31y30……y0,則 Y=-y31*2^31+y30*2^30+……+y0*2^0
原碼
原碼(true form)是一種計算機中對數字的二進制定點表示方法。原碼表示法在數值前面增加了一位符號位(即最高位為符號位):正數該位為0,負數該位為1(0有兩種表示:+0和-0),其餘位表示數值的大小。
Ⅲ 用補碼一位乘法計算X*Y的補碼,寫出計算過程,X=0.1010,Y= -0.0111
X的補碼為0.1010,-X的補碼為1.0110,Y的補碼為1.1001(低位有4位)。
高位
低位(乘數補碼處理值)
說明
00
0000
|110010
最低位10,高位加-X的補碼
11
0110
————
11
0110
11
1011
01|1001
執行右移,最低位01,高位加X的補碼
00
1010
————
00
0101
00
0010
10|1100
執行右移,最低位00,高位加0
00
0000
————
00
0010
00
0001
010|110
執行右移,最低位10,高位加-X的補碼
11
0110
————
11
0111
11
1011
1010|11
執行右移,乘數補碼被右移出去,進行最後一次
00
0000
運算,最低位11,高位加0
————
11
1011
1010|11
最終結果為11.10111010,因為補碼一位乘結果用的是雙符號位,換成單符號位就是1.10111010。
我總結了點補碼一位乘的方法,給你參考下
處理對象:被乘數補碼*乘數補碼=兩數積的補碼。
預處理:
1、單獨算出被乘數的相反數的補碼,同時乘數補碼往右擴一位補0(乘數補碼處
理值),積的符號位與其餘位必須一同計算。
2、兩數補碼相乘拆分為多個加法運算。
3、每次加法運算分為高位和低位兩部分處理,高位初始值為0、位數是在帶符號被乘
數位數基礎上向左擴一位(利於右移),低位初始值是乘數補碼處理值、位數與乘數
數據位位數相同。
第一次加:4、第一次加法是由高位和加數相加,加數的值由乘數補碼處理值的最低兩位確定
(若為01,加數為被乘數補碼,若為10,加數為被乘數的相反數的補碼,若這兩位
的數值相等,則加數為0;加數左邊多餘的一位根據其符號位確定補0還是補1,符
號位為0則補0,符號位為1則補1)。
5、此次加法運算結束後,加法運算所得的高位(部扒旅分積)與低位合成一個整體並右移1
位得到新的高位和低位(右移時左邊補0還是補1由右移前的符號位確定,符號位為
0則補0,符號位為1則補1,,另外在右移時乘數補碼處理值也連帶著右移)。
第二次加:6、高位再次進行加法處兆中理,加數的值由新得到的乘數補碼處理值的最低兩位確定(確
定方法同第4點)。
7、此次加法運算結束後,加法運算所得的高位(部分積)與低位合成一個整體並右移1
位得到新的高位和低位(右移時高位左邊補0或1的確定方法同第5點,另外在右移
時乘數補碼處理值也連帶著右移)。
循環加法:8、按「第二次加」的方法循環,直至低位將乘數補碼處理值的每一位都右移出去後,
再進行一次加法運算(此次加法運算結束後不進行右移),此時得到的高位和低位
合成一個整體就是最終乘積,這個最終乘積是雙符號位。
9、所得的最終乘積的小數位數必須是被乘
數補碼與乘數補碼的小數位數之和。
關於雙符號位:00
正,11
負,01
上溢,10
下溢。
附註:無論是原碼一位乘,還是補碼一位乘、補碼二位乘,與手工演算法都有共通之處,都是根據
乘數每一位(或兩位)
的狀態在被乘數的基礎上來確定加數(如被乘數、被乘數補碼、被
乘數相反數春猜凳補碼、0),因為乘數是二進制的,
每一位只有0、1兩種狀態,所以又免去
了手算十進制乘法中以乘數每一位去乘被乘數來確定加數的過程,而右
移所得的部分
積就相當於手算乘法中左移加數。