CPU 運算加減法運算
假設(shè)計算 3+3
原碼是0011 * 0011(以4位存貯單元,,因為是原碼,最高位不代表符號位)
1. 首先 判斷 兩個加數(shù)是否有 負(fù)數(shù)(減法) 如果有 負(fù)數(shù) 先將負(fù)數(shù)轉(zhuǎn)為補碼進行運算
2. 然后將兩個正數(shù)相加 所以計算機底層只進行加法運算
正數(shù)的補碼 反碼 源碼都是本身 負(fù)數(shù)的補碼 是先將正數(shù)求反碼 然后將反碼+1 得到該正整數(shù)的補碼
模擬CPU運算乘法的步驟:
假設(shè)計算3*3 原碼是0011 * 0011(以4位存貯單元,,因為是原碼,,最高位不代表符號位) CPU中的乘法器過程如下: 3個寄存器分別存放乘數(shù)0011 被乘數(shù) 0011 一個部分積初始值為0 1、首先判斷乘數(shù)寄存器(目前為0011)的最低位為1,。如果為1則將部分積的值通過加法器加上被乘數(shù)0011,。因此此步結(jié)束后部分積寄存器內(nèi)容為0011
3、判斷乘數(shù)寄存器最低位(0001).為1。將部分積通過加法器加上被乘數(shù)0011,。因此此不結(jié)束后部分積寄存器內(nèi)容是(0001+0011=0100). 4,、乘數(shù)寄存器右移一位,同時將部分積寄存器也有右移一位,。同第2步,。因此部分積寄存器原來的值0100變成了0010。乘數(shù)寄存器1001變成了0100,,低位1溢出,,最高位被部分積溢出的0填充。 5,、判斷乘數(shù)寄存器低位為0不做加法操作直接做第2步的移位操作,。既有了部分積變成0001,乘數(shù)變成了0010,。 6,、判斷乘數(shù)寄存器低位為0不做加法操作直接做第2步的移位操作。既有了部分積變成0000,,乘數(shù)變成了1001,;此時所有乘數(shù)全部處理完畢。 7,、最終結(jié)果將部分積作為高位,,乘數(shù)寄存器作為低位得到值為00001001 換算成10進制得到9 |
|
來自: 昵稱70680357 > 《待分類》