說明:
在本文中二進位制數均使用8位數字
二進位制符號數最左一位位符號位,0表示正,1表示負
在符號數值形式下,正數和負數的數值位均為其原碼,符號位0為正,1為負。
如:十進位制 +
100+100
+100
用符號數值表示為 01100100
01100100
011001
00 −
100-100
−100
用符號數值表示為 11100100
11100100
111001
00在反碼形式下,正數與其符號數值形式相同,負數是其對應正數的反碼。
如:反碼形式中,十進位制 +
100+100
+100
表示為 01100100
01100100
011001
00 −
100-100
−100
表示為 +
100(
01100100
)+100(01100100)
+100(0
1100
100)
的補碼,即 10011100
10011100
100111
00在補碼形式下,正數與其符號數值形式和反碼形式相同,負數是其對應正數的補碼。
在計算機中負數均用補碼形式表示,因為如果使用符號數值形式,在算術運算中會出現問題,如:
20 −15
20-15
20−1
5 用符號表示是:
00010100
00010100
000101
00 +
++10001111
10001111
100011
11 =
==10100011
10100011
101000
11結果為−
35-35
−35,所以不能採用直接相加的方法計算,
而對於補碼形式
00010100
00010100
000101
00 +
++11110001
11110001
111100
01 =
==100000101
100000101
100000
101 (進製捨棄)
結果為0000101(+
5)
0000101(+5)
000010
1(+5
),結果正確,可以直接利用加法器進行計算
加法分為4種情況:
兩個數均正
一正一負和為正
一正一負和為負
兩個數均負
前兩種情況結果為二進位制原碼,後兩種情況結果為補碼形式的負數(捨去最後的任何進製)。請讀者自行舉例驗證。
個人理解:可以將這四種情況都看做是補碼加法,結果為補碼。因為正數的補碼是他本身,且有定理:兩數補碼之和等於兩數之和的補碼,證明見:關於「兩數補碼之和等於兩數之和的補碼」的證明
注意:兩數相加可能會發生溢位情況(兩數均正或均負),此時我們通過引入變形補碼的方式驗證是否發生溢位。
變形補碼即用兩個符號位來表示正負,00
0000
為正, 11
1111
為負,數值位與補碼形式相同,以 125+50
125+50
125+50
為例: 001111101
001111101
001111
101
+
++000110010
000110010
000110
010
=
==010101111
010101111
010101
111
最左邊一位表示的是真實的符號:00+00
=0
x00+00=0x
00+00=
0x,11 +11
=1
x11+11=1x
11+11=
1x而左邊第二位是計算出的補碼的符號位,
前兩位符號位不同,則表示溢位。
減法即取減數的補碼後,將兩數相加(捨去最後的任何進製)。
直接加法在大多數計算機中,乘法是通過加法器完成的,即乙個數加上其本身,相加次數為乘數。
部分積:
確定乘積的符號
將負數轉變為原碼的形式(因為大多數計算機以補碼形式儲存負數)
模仿豎式乘法的形式進行計算
如果符號為負,則取補碼轉換為補碼形式,如果為正就保持原碼
計算機中的除法運算是通過減法完成的,通過加法器來完成(因為減法也是通過加法器完成的)
基本過程:
確定除法的符號
將負數轉變為原碼的形式使用補碼加法將減數從被減數中除去,商加一
重複步驟二直至餘數為0 或負,完成減法
例:以 12÷(
−3
)12\div(-3)
12÷(−3
) 為例
結果為負
將 − 3-3
−3轉換為原碼 10000011
10000011
100000
11使用補碼加法將 −3-3
−3從 12
1212
中減去(即 00001100
00001100
000011
00加 −3-3
−3的補碼 01111101
01111101
011111
01)共減了4次,結果分別為 10001001
10001001
100010
01、00000110
00000110
000001
10、10000011
10000011
100000
11、00000000
00000000
000000
00(捨去所有的最後進製)
商為 −4-4
−4,轉換為補碼形式為 11111100
11111100
111111
00
二進位制的原碼 反碼 補碼
如何表示二進位制數的正負呢 通常採用的方法是在二進位制數的前面加一位符號位,符號位為0表示這個數是正數,符號位位1表示這個數字負數,這種形式的數就稱為原碼。為什麼需要二進位制補碼 在做減法時,如果兩個數時用原碼表示的,則首先需要比較兩數絕對值的大小,然後以絕對值大的乙個數作為被減數 絕對值小的乙個作...
二進位制原碼 反碼 補碼詳解
原碼 原碼是指將最高位作為符號位 0表示正,1表示負 其它數字位代表數值本身的絕對值的數字表示方式。例如 數字6 在計算機中原碼表示為 0 000 0110 其中,第乙個數字0是符號位,0表示正數,0 000110是數字6的二進位制資料表示。數字 6 在計算機中原碼表示為 1 000 0110 以上...
二進位制 真值 原碼 反碼 補碼
機器數 乙個數在計算機中二進位制的表示形式叫機器數,機器數是帶符號的 計算機使用最高位來表示符號位 負數為1 正數為0.假如計算機的字長為8位 那麼對於十進位制3的機器數表示為0000 0011 而對於 3的機器數表示為1000 0011。真值 由於機器數是帶符號的所以機器數的形式值就不等於實際的值...