計算機的運算方法


  1. 無符號數和有符號數

    • 在計算機中參與運算的數有兩大類:無符號數和有符號數。

    • 計算機中的數均存放在寄存器中,通常稱寄存器的位數為機器字長。所謂無符號數,即沒有符號的數,在寄存器中的每一位均可用來存放數值。當存放有符號數時,則需留出位置存放符號。因此,在機器字長相同時,無符號數與有符號數所對應的數值范圍是不同的。

    • 對有符號數而言,符號的“正”、“負”機器是無法識別的,但由於“正”、“負”恰好是兩種截然不同的狀態,如果用“0”表示“正”,用“1”表示“負”,這樣符號也被數字化了,並且規定將它放在有效數字的前面,即組成了有符號數。

    • 把符號“數字化”的數稱為機器數,而把帶“+”或“-”符號的數稱為真值。一旦符號數字化后,符號和數值就形成了一種新的編碼。在運算過程中,符號位能否和數值部分一起參加運算?如果參加運算,符號位又需作哪些處理?這些問題都與符號位和數值位所構成的編碼有關,這些編碼就是原碼、補碼、反碼和移碼。在這些編碼中,補碼的應用居多,原因是補碼可以帶符號運算,而且可以變減為加。

  2. 原碼、反碼、補碼、移碼表示法

    • 原碼:原碼就是符號位加上真值的絕對值,即用第一位表示符號,其余位表示值。

    • 反碼:反碼有兩種情況:

      ​ 當原碼為正數時,其反碼就等於正數的原碼。

      ​ 當原碼為負數時,其反碼就等於正數的原碼按位取反,但是最高位的符號位不變。

    • 補碼:補碼有兩種情況:

      ​ 當原碼為正數時,其補碼就等於正數的原碼。

      ​ 當原碼為負數時,其補碼就等於正數的原碼按位取反,符號位不變,最后再在末尾加1(即在反碼的末尾加1)。

    • 移碼:移碼(又叫增碼),是符號位取反的補碼。

    總結:

    • 正數的原碼,補碼,反碼相同。

    • 負數的反碼:原碼的數值取反。

    • 負數的補碼:原碼轉換成反碼,反碼末位加1。

    • 負數的移碼:與補碼的符號位(第一位數字)相反。

  3. 移位運算

    1. 算數移位規則

      • 機器數為正時,不論是左移還是右移,添補代碼均為0。

      • 由於負數的原碼數值部分與真值相同,故在移位時只要使符號位不變,其空位均添0。

      • 由於負數的反碼各位除符號位外與負數的原碼正好相反,故移位后所添的代碼應與原碼相反,即全部添1。

      • 分析任意負數的補碼可發現,當對其由低位向高位找到第一個“1”時,在此“1”左邊的各位均與對應的反碼相同,而在此“1”右邊的各位(包括此“1”在內)均與對應的原碼相同。故負數的補碼左移時,因空位出現在低位,則添補的代碼與原碼相同,即添0;右移時因空位出現在高位,則添補的代碼應與反碼相同,即添1。

    2. 邏輯移位規則

      • 邏輯左移時,高位移丟,低位添0。
      • 邏輯右移時,低位移丟,高位添0。
    3. 加法和減法運算

      加減法運算是計算機中最基本的運算,因減法運算可看做被減數加上一個減數的負值,即A-B=A+(-B),故在此將機器中的減法運算和加法運算合在一起討論。現代計算機中都采用補碼作加減法運算。

    4. 溢出判斷

      在計算機中,超出機器字長的現象叫溢出。

      補碼定點加減運算判斷溢出有兩種方法:

      1. 用一位符號位判斷溢出

        • 對於加法,只有在正數加正數和負數加負數兩種情況下才可能出現溢出,符號不同的兩個數相加是不會溢出的。

        • 對於減法,只有在正數減負數或負數減正數兩種情況下才可能出現溢出,符號相同的兩個數相減是不會溢出的。

      2. 用兩位符號位判斷溢出

        • 在用變形補碼作加法時,2位符號位要連同數值部分一起參加運算,而且高位符號位產生的進位自動丟失,便可得正確結果。
        • 變形補碼判斷溢出的原則是:當2位符號位不同時,表示溢出,否則,無溢出。不論是否發生溢出,高位(第1位)符號位永遠代表真正的符號。

參考:

https://blog.csdn.net/cbwem/article/details/79683265

https://www.cnblogs.com/wander-clouds/p/8796481.html

https://blog.csdn.net/xdd19910505/article/details/40424533


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM