# 計組 L3 ## 2nd期中考 ### 加減法(減法就是將A+B的B去(負數)做2's complement再去加它) 基本直式加法即可,注意overflow #### Overflow: 拿加法為例  #### 不常見特例: Saturating Operation: 當overflow發生時,取最大正值或最小負值。 --- ### :heavy_plus_sign: :heavy_multiplication_x: 無號數乘法 #### :one: 傳統乘法Example   #### :two: Optimized乘法Example : .被乘數register瘦身成32bits .乘數存在Product右半部32bits . 因為  .所以當一次乘法(加Multiplicand)做完後, 乘數(Multiplier)LSB位就不需要了 .同理Product左邊32bits存放目前result暫時值的 LSB位因為不會再做到加法運算,也不需要了 .>>**因此我們就一起shift right!!** .見下例   --- ### :heavy_minus_sign: :heavy_multiplication_x: 有號數乘法: Booth's Algorithm #### <font color="blue">Booth's Algorithm: (1)可對有號數做乘法(2)效率比傳統或Optimized乘法都快</font> . 在optimized乘法的基礎下 **核心精神: 一次檢查乘數(Multiplier)的2個bit** **分為beginning(10), middle(11), end(01) of a run of 1s**  . 演算法分為2 steps `一樣在最後會Shift Product register right 1 bit!!!` | bits | 要幹嘛 | | -------- | -------- | | 01 | 加被乘數到product左邊 | | 10 | 減被乘數到product左邊 |  . 下面是例子:正數 1. 一開始先在最右邊補個0當作虛構的bit 2. 當Product做shift right時,MSB(最左位)做sign extention  . **負數的例子!!!!**  --- #### MIPS Multiplication  --- ### :heavy_division_sign: 除法 #### :one: 傳統除法  . 觀察式子可以發現除數(divisor)其實一直在shift right 而且ALU是在做Remainder(餘數)去減divisor(除數) `如果得到結果<0,Shift left商數(Quotient),然後Q0(商的LSB)=0` `如果得到結果>=0,Shift left商數(Quotient),然後Q0(商的LSB)=1`  . 下面是例子  #### :two: Optimized除法 . **將餘數(Remainder)存在左邊32-bits,商數(Quotient)存在右邊32-bits** **原本是移Quotient往左,現在變成移Remainder往左**  :::success 這裡我們可以發現,這可以跟乘法共用一個hardware(乘法是Product shift right),在實際設計電路時可以省下hardware的cost。 ::: . 下面是例子  --- #### MIPS Division  --- 第二次期中考結束!!!!! --- ##### tags: `計組` `CO` `L3` --- :::warning #### <font color="black">問答區/Chatting Room </font> :::
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up