計算機運算方法之(原碼 補碼 反碼 移碼)

無符號數

  • 表示範圍:0-65535

有符號數

  • 表示範圍: -32768~+32767
  • 正值:0
  • 負數:1

有符號數(小數)

小數:+0.1011表示:
01011 小數點位置在0.1011
小數:-0.1011表示:
1 1011小數點位置在1.1011

有符號數(整數)

+1100 表示:
01100小數點位置在01100.
-1100表示:
11100小數點位置在11100.

0+0=0 0-0=0 0*0=0
0+1=1 1-1=0 0*1=0
1+1=0 1-0=1 1*0=0
1+1+1=1 0-1=1 1*1=1

真值

  • 把帶有"+“ “-”符號的數稱爲真值

機器數

  • 把符號數字化的數稱爲機器數

原碼

原碼又稱爲帶符號的絕對值表示

  • 整數的符號位與數值位用(逗號)隔開
  • 小數的符號位與數值位用(小數點)隔開
  • 例子:
  • x=+1110時,原碼【x】原=0,1110
  • x=-1110時,原碼【x】原=1,1110
  • x=0.1101時,原碼【x】原=0.1111
  • x=-0.1101時,原碼【x】原=1.1101
  • 有原碼求真值:
  • 原碼【x】原=1.0011,得到 x=-0.0011
  • 原碼【x】原=1,1100,得到 x=-1100
  • 原碼【x】原=0.1101,得到 x=0.1101
    原碼中的“零”有兩種表示方式:
  • 【+0.0000】原=0.0000
  • 【-0.0000】原=1.0000

補碼

只要確定了模,就可以找到一個與負數等價的正數(改正數就是負數的補數),這樣就可以把減法運算用到加法實現

  • 正數相對於“模”的補數就是正數本身
  • +7 = +7 (mod 10)
  • 一個正數和一個負數互相爲補數時,他們倆的絕對值和就是模數
  • -3 = +7 (mod 10)所以補數= |-3| + |7|=10
  • 例如:
  • x=+1010 【x】補=0,1010(正數補數爲自身)
  • x=-1101 【x】補=1,0011 即(負數: 取反+1)
  • x=0.1001,【x】補=0.1001(正數補數爲自身)
  • x=-0.0110,【x】補=1.1010(負數: 取反+1)

補碼中的0只有一種表達方式:【+0】補=【-0】補=0.0000

已知補碼求真值:
(注意先判斷正負,負數取反,正數不改變)

  • [x]補=1.0101 x=-0.1011(原碼除去符號位取反,再+1)
  • [x]補=1,1110 x=-0010(原碼除去符號位取反,再+1)
  • [x]補=0.1101 x=0.1101(正數不改變)

反碼

x爲整數時:

  • x=+1101時,反碼=0,1101(正數反碼還是本身)
  • x=-1101時,反碼=1,0010(負數反碼,除符號位取反)

x爲小數時:

  • x=+0.0110時,反碼=0.0110
  • x=-0.0110時,反碼=1.1101

反碼中的0有兩種表達方式:

  • 【+0.0000】反=0.0000
  • 【-0.0000】反=1.1111

移碼

利用二進制數,比較十進制數21和-21的大小

x=21,對應的二進制數爲+10101,【x】補=0,10101
x=-21,對應的二進制數爲-10101,【x】補=1,01011
如果按照補碼進行比較,則101011 > 010101,答案錯誤
x=10101 加上2的5次方 10101+100000=110101
x=-10101加上2的5次方 -10101+100000=001011
所以 110101>001011
移碼: [x]移=2的n次方 + x

例如:

  • x=10100 則在【x】移=2*5+ x=100000+10100=1,10100
  • x=-10100 則在【x】移=2*5+ x=100000-10100=0,01100
  • 同一個真值的移碼和補碼僅相差一個符號位
  • x=-10100 則在【x】補=1,01100 【x】移=0,01100
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章