<科普>CPU進行四則運算(加減乘除)的主流方法

如下除特殊說明外均爲32位數的運算spa

1.加法運算

  A   +   B    =   Cblog

無符號整數加法和有符號整數加法均採用如下方案進行操做io

用到的寄存器與初始化內容:基礎

                32位加數寄存器--------初始化爲加數循環

                32位被加數寄存器 ----初始化爲被加數im

                32位和寄存器 ----------所有置零img

操做方案以下:解決方案

  將加數寄存器被加數寄存器按位對齊,每組對應位分別進行如下操做:co

放在一塊兒就是:(因32位畫出來過於繁雜,這裏的圖示採用了8位)浮點數

在此基礎上還要設置溢出判斷,來表示此次運算是否發生溢出。

2.減法運算

  被減數   -   減數  =  差

  這裏承用上面的加法運算單元。

  用A表示被減數,B表示減數。首先將B轉換爲其相反數即(-B)。而後進行A+(-B)的加法運算。同時也要設置一段邏輯電路判斷減法運算是否發生溢出。

3.乘法運算

  被乘數  X  乘數   =   積

1>無符號整數乘法

   最先的解決方案:

所用到的存儲器與初始化存儲內容:

                32位乘數寄存器--------初始化爲乘法運算的乘數

                64位被乘數寄存器 ----低32位填充爲乘法運算的被乘數,高32位置零

                64位積寄存器 -----------所有置零

 

用到的功能分別爲:循環,無符號加法,移位。

 

執行結構圖以下:

 

    改進後的解決方案:

所用到的存儲器與初始化存儲內容:

                32位被乘數寄存器(簡稱A)------初始化爲乘法運算的被乘數

                64位積寄存器 (簡稱B)-----------高32位置零,用來存放乘積,低32位初始化爲乘數

對於每次迭代:

  

 

2>有符號整數乘法

先把乘數和被乘數的符號位記下來,而後把乘數和被乘數轉換成正數進行無符號乘法運算,運算結果再加上符號。

3>浮點數乘法

 

4.除法運算

  被除數   ÷   除數  =  商 ••••••餘數

1>無符號整數除法

 

所用到的存儲器與初始化存儲內容:

                32位商寄存器-----------所有置零

                32位除數寄存器 -------填充32位除數

                65位餘數寄存器 -------左半部分置零,右半部分填充32位被除數

 

處理結構圖:

 

2>有符號整數除法

 跟上文有符號整數乘法同樣,先保存除數、被除數符號,若二者符號異或爲1,則商爲負。

3>浮點數除法

相關文章
相關標籤/搜索