定點補碼一位乘的運算方法

2022-05-19 22:26:21 字數 3099 閱讀 3736

按乘數為正、負兩種情況討論:

1.被乘數[x]補符號任意,乘數[y] 補為正

設[x]補=

[y]補=

根據補碼定義可推得: [x]補=2+x=2n+1+x (mod2)

y]補=y=

其中x,y為真值.故: [x]補[y]補=(2n+1+x)*y=2n+1+xy

21*2n(

2(y1y2...yn)+xy

注意被2n乘已成為正整數.

根據模的運算性質有:

2(y1y2...yn)=2 (mod 2)

所以 [x]p*[y]p=2+x*y=[x*y]補mod 2)

即x*y]p=[x]p*[y]p=[x]p*y

(因為ys=0為正) =[x]p* (

當乘數y>0,不管x的符號如何,將[x]p*y=[x*y]p

2.被乘數[x]p符號任意,乘數y為負

[x]補=

[y]補= =2+y (mod 2)

該項得: y=[y]補-2= -2=1+

所以 x*y=x*(

將上式兩邊取補所以有: [x*y]p=[x(

x(x( [-x]p

因為 (>0 正數的補碼 = 本身

所以 [x( [x]p*(

所以 [x*y]p= [x]p*( -[x]p (2)

將(1)和(2)綜合起來:得統一的算式

[x*y]p= [x]p*( -[x]p*y0 (3)

x]p*(-y0+

分析:右邊第二項[x]p*y0

當y為正 y0=0 該項不存在1)

y為負 y0=1 該項為[x]p2)

將(3)式展開,推出邏輯實現分步演算法:

獲得各項部分積的累加形式.

[x*y]p= [x]p*( -[x]p*y0

x]p*(2-1y1+2-2y2+…+2-nyn) -[x]p*y0

x]p*[-y0+ (y1-2-1y1)+( y22-1-2-2y2)+…+(2-(n-1)yn-2-nyn)

x]p*[(y1-y0)+(y2-y1)2-1+…+(yn-yn-1)2-(n-1)+(yn+1-yn) 2-n]

說明:(1) 可寫成2-1y1+2-2y2+…+2-nyn

(2)提公因式[x]p將 -y0 提前

(3)去括號重新組合

(4) y1-2-1y1=(20-2-1)y1=(1-1/2) y1=0.5y

y22-1-y22-2=(2-1-2-2)*y2=2-2y2

[x*y]補= [x]補*( -[x]補*y0

= [x]補*(2-1y1+2-2y2+…+2-nyn) -[x]補*y0

=[x]補*[-y0+ (y1-2-1y1)+( y22-1-2-2y2)+…+(2-(n-1)yn-2-nyn)

=[x]補*[(y1-y0)+(y2-y1)2-1+…+(yn-yn-1)2-(n-1)+(yn+1-yn) 2-n]

將[x]p乘進去,然後從第2項開始,每次提2-1

=(y1-y0)[x]p+(y2-y1)2-1[x]p+…+(yn+1-yn)2-n[x]p

=(y1-y0)[x]p+2-1[(y2-y1)[x]p+(y3-y2)2-1[x]p+(y4-y3) 2-2[x]p…+(yn+1-yn) 2-(n-1) [x]p]1

=(y1-y0)[x]p+2-11

=(y1-y0)[x]p+2-12}1

…………………

=(y1-y0)[x]p+2-1n-1…}3}2}1

說明: 式中yn+1是增設的附加位,初始值位0.

ai取決於相鄰兩位乘數的比較結果

顯然(4)式就是部分積累加的形式

若定義[p0]補位初始部分積=0. [p1]補……[pn]補依次位各步求得的累加並右移後的部分積.

將(4)改寫:更接近於分步運算邏輯實現

[x*y]p=[x]p*[(y1-y0)+(y2-y1)2-1+…+(yn-yn-1)2-(n-1)+(yn+1-yn) 2-n]

將[x]p乘進去,然後再次提2-1

=(y1-y0)[x]p+(y2-y1)2-1[x]p+…+(yn+1-yn)2-n[x]p

=(y1-y0)[x]p+2-1[(y2-y1)[x]p+(y3-y2)2-1[x]p+(y4-y3) 2-2[x]p…+(yn+1-yn) 2-(n-1) [x]p]1

=(y1-y0)[x]p+2-11

=(y1-y0)[x]p+2-12}1

…………………

=(y1-y0)[x]p+2-1n-1…}3}2}1

y>0x*y]p= [x]p*(

y<0x*y]p= [x]p*( -[x]p (2)

統一算式: [x*y]p= [x]p*( -[x]p*y03)

x]p*(-y0+

化簡: =[x]p*[(y1-y0)+(y2-y1)2-1+…+(yn-yn-1)2-(n-1)+(yn+1-yn) 2-n] (4)

將[x]p乘進去從第二項開始,每次提2-1

==(y1-y0)[x]p+2-1[(y2-y1)[x]p+(y3-y2)2-1[x]p+(y4-y3) 2-2[x]p…+(yn+1-yn) 2-(n-1) [x]p]1

……………………

=(y1-y0)[x]p+2-1n-1…}3}2}1

=(y1-y0)[x]p+2-1n-1…}3}2}1

[p1]補

寫成遞推公式:

[p0]補=0

[p1]補=2-1 令yn+1=0

[p2]補=2-1

………………

[pi]補=2-1

………………

[pn]補=2-1

所以: [ x*y]補=[[pn+1]補]= (y1-y0)[x]p +[pn]補<4>

注意:(1)y0 是乘數y的符號位.

yn+1是人為附加位 =0.使式子規範整齊.

(2)開始運算時p0=0 , yn+1=0

部分積※ 新部分積獲得的方法:1、乘數相鄰的兩位求差。2、結果乘以[x]補。3、並與上次部分積相加。4、相加結果右移1位。

根據相鄰兩位比較結果決定運算操作的方法,稱為「比較法」,也稱booth演算法。

多位數乘一位數

多位數乘一位數 不進製 乘法教學設計一 教學內容 教科書第74頁例1,練習十六第1 4題。教學目標 1 使學生經歷多位數乘一位數 不進製 的計算過程,初步學會乘法豎式的書寫格式,了解豎式每一步計算的含義。2 養學生獨立思考和合作交流的學習方法和積極的學習態度,體驗計算方法的多樣化。3 培養學生初步的...

筆算多位數乘一位數

筆算多位數乘一位數 不進製 基於課程標準的教學設計 教學內容 人教版義務教育課程標準實驗教科書 三年級上冊教科書第60頁。設定學習目標的依據 課程標準 2011年版 對本課的要求是 能熟練計算筆算乘法。基於標準的思考 為了進一步找準定位,我首先認真研讀 課標 課程標準 2011年版 對本課的要求是 ...

一位母親的名言

一位母親的教女名言!01 不要試圖什麼都爭第一。02 不要試圖交到乙個完美的朋友,也不要交到很多朋友。03 幫助別人,自己也會強大起來。04 學會用真誠的簡單,對付虛偽的複雜。05 考上大學,你是我的女兒 你掃馬路,更是我的女兒 只要保持高貴的人格,掃馬路也可以掃出乙個光明純潔的世界。06 學校裡的...