天天看點

計算機組成原理——移位運算

文章目錄

  • 算數移位
    • 原碼的算數移位
    • 反碼的算數移位
    • 補碼的算數移位
  • 邏輯移位
    • 邏輯移位的應用舉例
  • 循環移位

移位:通過改變各個數位位和小數點的相對位置,進而改變各數位位的位權。可用移位運算實作乘法、除法

例如原碼為

10101000

進行算數移位

計算機組成原理——移位運算

原碼的算數移位——符号位保持不變,僅對數值位進行移位。

  • 右移:高位補0,低位舍棄。若舍棄的位=0,則相當于÷2;若舍棄的位≠0,則會丢失精度
  • 左移:低位補0,高位舍棄。若舍棄的位=0,則相當于×2;若舍棄的位≠0,則會出現嚴重誤差

反碼的算數移位——正數的反碼與原碼相同,是以對正數反碼的移位運算也和原碼相同。

  • 右移:高位補0,低位舍棄。
  • 左移:低位補0,高位舍棄

反碼的算數移位——負數的反碼數值位與原碼相反,是以負數反碼的移位運算規則如下,

  • 右移:高位補1,低位舍棄。
  • 左移:低位補1,高位舍棄。

補碼的算數移位——正數的補碼與原碼相同,是以對正數補碼的移位運算也和原碼相同。

  • 左移:低位補0,高位舍棄。

補碼的算數移位——負數補碼=反碼末位+1 導緻反碼最右邊幾個連續的1都因進位而變為0,直到進位碰到第一個0為止。

規律——負數補碼中,最右邊的1及其右邊同原碼。最右邊的1的左邊同反碼

負數補碼的算數移位規則如下:

  • 右移(同反碼):高位補1,低位舍棄。
  • 左移(同原碼):低位補0,高位舍棄。
計算機組成原理——移位運算
  • 邏輯右移:高位補0,低位舍棄。
  • 邏輯左移:低位補0,高位舍棄。

可以把邏輯移位看作是對“無符号數”的算數移位

繼續閱讀