二進位制符號數的原碼 反碼 補碼

2021-10-03 02:18:03 字數 3327 閱讀 5446

說明:

在本文中二進位制數均使用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。真值 由於機器數是帶符號的所以機器數的形式值就不等於實際的值...