JPH0773024A - 10進乗算器 - Google Patents

10進乗算器

Info

Publication number
JPH0773024A
JPH0773024A JP22152093A JP22152093A JPH0773024A JP H0773024 A JPH0773024 A JP H0773024A JP 22152093 A JP22152093 A JP 22152093A JP 22152093 A JP22152093 A JP 22152093A JP H0773024 A JPH0773024 A JP H0773024A
Authority
JP
Japan
Prior art keywords
digit
value
multiplicand
register
partial product
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP22152093A
Other languages
English (en)
Other versions
JP3230349B2 (ja
Inventor
Toshimitsu Nagata
敏光 永田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP22152093A priority Critical patent/JP3230349B2/ja
Publication of JPH0773024A publication Critical patent/JPH0773024A/ja
Application granted granted Critical
Publication of JP3230349B2 publication Critical patent/JP3230349B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】10進乗算器に関し、乗数の1桁当たり1サイ
クルで演算する10進加算器を実現することを目的とす
る。 【構成】 乗数の桁毎に被乗数との積(部分積)を得
て、桁合わせをして部分積を加算することにより被乗数
と乗数との積を得る10進加算器において、被乗数の偶
数倍の値を計算して保存しておき、乗数のある桁におい
て、1つ上位の桁の値が偶数であるとき、この桁の値が
偶数のときは、被乗数の、この桁の値倍の値を部分積と
し、奇数のときは、被乗数の、この桁の値+1 倍の値を
部分積とし、ある桁において、1つ上位の桁の値が奇数
であるとき、この桁の値が偶数のときは、被乗数の、こ
の桁の10の補数倍の負の値を部分積とし、この桁の値が
奇数のときは、被乗数の、この桁の数+1 の10の補数倍
の負の数を部分積とするように構成する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は10進乗算器に関する。
【0002】
【従来の技術】従来の10進乗算器は、初めに被乗数の
2倍、4倍、8倍を生成してレジスタ等に保持してお
く。次に、生成してある被乗数の1、2、4、8倍の値
を乗数の1桁の値に合わせて組合せて、選択し加算す
る。これを部分積として、乗数の各桁において部分積を
得て桁合わせをしながら加算することを繰り返すことに
より最終結果の積を得る。
【0003】この方法では、乗数の1桁の値が1,2,
4,8の場合は1桁当たり1回の加算でよいが、3,
5,6,9の場合は2回、7の場合は3回の加算(1+
2+4)が必要である。ここで、乗数の1桁の値が7の
場合に8倍と−1倍とを加算することで、1桁当たり2
回以下にすることができる。また別の方法として、被乗
数の2倍、3倍、6倍を生成しておき、それらの組み合
わせをとることにより、1桁当たり2回以下にすること
ができる。
【0004】このようにして、1桁当たり2回の処理に
減らし、2つの加算器によりパイプライン処理を行なう
ことにより、1サイクル当たり1桁の乗算を行なうこと
ができるが、加算器が2つ必要である。
【0005】
【発明が解決しようとする課題】従って、回路規模を小
さくすると乗数の1桁当たり2サイクルの時間が必要で
あり、1桁当たり1サイクルにするには物量が多くなる
という問題がある。
【0006】本発明は、被乗数の偶数倍(2,4,6,
8,10倍)の値を生成しておき、乗数の各桁の演算を行
なうときに上位桁が偶数か奇数かにより、倍数の選択を
変えることにより、1桁当たり1サイクルで演算する1
0進加算器を実現することを目的としている。
【0007】
【課題を解決するための手段】図1は本発明の原理構成
図である。入力された被乗数を保持する被乗数レジスタ
1と、入力された乗数を保持する乗数レジスタ2と、被
乗数の倍数を保持する倍数保持回路3と、乗数レジスタ
2の各桁を選択し、その値と1つ上位の桁の奇偶とによ
り判断した倍数値を出力する桁選択回路4と、被乗数レ
ジスタ1と倍数保持回路3とを入力とし、桁選択回路4
の出力値に従って選択した値を、10進加算器6に出力
する倍数選択回路5と、複数桁を同時に演算する符号付
の10進加算器6と、10進加算器6の出力を保持する
部分積レジスタ7と、全体を制御する制御回路8とから
なる。
【0008】制御回路8は、2つの制御段階をもつ。第
1段階で、被乗数レジスタ1の値の偶数倍の各値を10
進加算器6により生成して倍数保持回路3にセットす
る。
【0009】第2段階で、桁選択回路4と倍数選択回路
5とによって、乗数の下位桁から順に選択して以下のよ
うにする。ある桁において、1つ上位の桁の値が偶数で
あるとき、この桁の値が偶数のときは、被乗数の、この
桁の値倍の値を部分積とし、奇数のときは、被乗数の、
この桁の値+1 倍の値を部分積とし、ある桁において、
1つ上位の桁の値が奇数であるとき、この桁の値が偶数
のときは、被乗数の、この桁の10の補数倍の負の値を部
分積とし、この桁の値が奇数のときは、被乗数の、この
桁の数+1 の10の補数倍の負の数を部分積とするように
倍数保持回路3内の値を選択する。
【0010】最下位桁で、それが奇数の場合は、選択し
た部分積と、被乗数の−1倍とを加算して部分積レジス
タ(7)にセットし、それ以外の場合は、選択した部分
積と、それまでの部分積レジスタ(7)の値とを桁合わ
せして加算して部分積レジスタ(7)にセットする。
【0011】ここで、最上位の桁の場合、一つ上の桁の
値は0、すなわち偶数として扱うことにより、他の桁と
同じ扱いになる。
【0012】
【作用】m桁の10進数の乗数Mは、各桁の数を dm ,d
m-1, dm-2,・・・, d2, d1として、次のように表せる。
【0013】M= dm * 10m-1+ dm-1 * 10m-2+ dm-2 *
10m-3+・・・+d2*101+d1*100 従って、被乗数をNとして、N*Mは、 乗数のある桁i の値 di とその下位の桁i-1 の値 di-1
とに関係する項を取り出すと、 N* di * 10i-1 +N* di-1 * 10i-2 (1) di が奇数とすると di + 1 は偶数であり、 = N*(di +1-1) * 10i-1 +N* di-1 * 10i-2 = N*(di +1 ) *10i-1 −N*10i-1 +N* di-1 * 10i-2 = N*(di +1 ) *10i-1 −N*(10 -di-1) *10i-2 (2) となる。ここで(10- di-1)は di-1 の10の補数である。
【0014】これは、i 桁目が奇数であるとき+1 して
偶数として被乗数の偶数倍を得て、下位の桁の10の補数
倍を引くことにしても同じであることを示す。ここで、
下位の桁i-1 の値 di-1 が奇数であるとき、同様にして
さらに1つ下位の桁i-2 とを取り出すと、 −N×(10 -di-1) * 10 i-2 +N× di-2 * 10i-3 = −N×(10-(di-1+1)+1)*10i-2 +N× di-2 * 10i-3 = −N×(10-(di-1+1))*10i-2 −N* 10i-2 +N× di-2 * 10i-3 = −N×(10-(di-1+1))*10i-2 −N* (10 -di-2)* 10i-3 (3) これは、1つ下位の桁で10の補数倍を得る処理におい
て、奇数を偶数に替えて、さらに下位の桁での補正に置
き換えることができることを示す。従って、乗数のある
桁に関する部分積を計算するとき、以下のようにしても
よいことを示している。
【0015】ある桁の1つ上位の桁の値が偶数であると
き、この桁の値が偶数のときは (1)式第1項により、被
乗数のその数倍の値を部分積とし、奇数のときは (2)式
第1項により、被乗数の、この桁の値+1 倍の値を部分
積とする。
【0016】ある桁の1つ上位の桁の値が奇数であると
き、この桁の値が偶数のときは(2)式第2項により、被
乗数のその桁の値の10の補数倍の負の数を部分積とし、
この桁の値が奇数のときは (3)式第1項により、被乗数
の、この桁の値+1 の10の補数倍の負の値を部分積とす
る。
【0017】このようにして得た部分積を乗数の桁毎に
桁合わせをして加算すれば最終結果の積がえられる。最
上位の桁の場合、一つ上の桁の値は0、すなわち偶数と
して扱えば同じである。また、最下位桁のさらに1桁下
に値が0の桁が有るものとして処理する必要がある。す
なわち、そのような桁においては1つ上の桁(すなわち
最下位桁)の値が奇数であれば被乗数の−10倍を部分
積として選択することになる(その桁の値は0であり偶
数であるから、0の10の補数の負の数は−10であ
り、最下位桁で考えれば−1)。
【0018】これは、最下位桁の場合は部分積レジスタ
7の内容は0であるので、最下位桁の値が奇数のときは
部分積レジスタの内容の代わりに、被乗数の−1倍を加
えることにすることで余分なサイクルをなくすことがで
きる。
【0019】図2は以上の関係を説明した被乗数選択説
明図である。本発明では被乗数の偶数倍を始めに計算し
て用意してあるので、乗数1桁の部分積は選択するだけ
であり、桁毎に桁合わせをして加算を繰り返せばよい。
このように構成することにより、補助的処理として最初
に偶数倍の計算と最下位桁の特殊処理をするだけでよ
く、1桁当たり1サイクルの加算と比較的速い乗算器を
実現することができる。
【0020】なお、乗数と被乗数とを入れ替えてもよい
ことは自明である。
【0021】
【実施例】以下、図面を参照して本発明の実施例を説明
する。図3は本発明の実施例の構成図である。図1と同
一のものは、同一の符号を付して示す。本実施例におい
て、10進1桁はBCDコードで表現し、4ビットであ
り、被乗数レジスタがn桁、乗数レジスタがm桁である
とする。
【0022】図において、10進加算器6はn+1桁の
符号付演算を行なうものであり、部分積レジスタはn桁
の上位レジスタ7aとm桁の下位レジスタよりなる。10
進加算器6の出力は、1桁シフトされて部分積レジスタ
の上位レジスタ7aと下位レジスタの最上位桁に入力され
る。下位レジスタは右シフト機能を持つシフトレジスタ
である。倍数レジスタ群は、×2,×4,×6,×8の
n+1桁のレジスタ4個よりなり、×10は、被乗数レ
ジスタを1桁左シフトしたものを使用する。桁選択回路
4は乗数レジスタ2の各1桁とその上位1ビット(計5
ビット)を選択する回路4aと、図2に従って倍数に変換
する回路4bとよりなる。
【0023】制御回路8は第1段階で倍数レジスタ群に
被乗数の偶数倍の値をセットする。2倍は、被乗数レジ
スタ1の内容を部分積レジスタ7に入れ、それと被乗数
レジスタ1の内容とを10進加算器6の両入力に入れて
加算して×2の倍数レジスタにセットし、4倍は、同様
にして部分積レジスタ7に残った2倍値と倍数レジスタ
の2倍値とを加算し、6倍は、部分積レジスタ7に残っ
た4倍値と倍数レジスタの2倍値とを加算し、8倍は6
倍値と2倍値を加算する。
【0024】第2段階では、桁選択回路4により乗数の
最下位桁から順次、1桁とその上位1ビットの5ビット
を取り出し、図2に示す変換を行なう。変換値の示す倍
数を倍数レジスタ群3と被乗数レジスタ1から選択し、
また符号を変換値の符号に合わせて、10進加算器6に
入力し、部分積レジスタの上位レジスタ7aと加算する。
このサイクルを乗数のm桁の各桁に渡って行なう。ただ
し、乗数の最下位桁の処理において、その値が奇数の場
合、加算器6の右入力には部分積レジスタ7の代わりに
被乗数の−1倍を入力するように制御する。
【0025】加算後、部分積レジスタにセットするとき
1桁右シフトするので、次の桁の演算をするとき桁合わ
せが行なわれることになる。最上位桁の演算が終わる
と、部分積レジスタに結果としての被乗数と乗数の積が
得られる。
【0026】図4に具体的な数値による演算の例を示
す。(A)は、1234×8765=10816010
の例である。従来は、 1234×2345= 1234×8000 +1234×400 +1234×60 +1234×4 +1234×200 +1234×1 +1234×100 本発明では、 1234×2345= 1234×8000 +1234×800 +1234×(-4
0) +1234×6 +1234×(-1) として演算して、同じ結果が得られる。(B)は、67
89×7531=51127959の例である。
【0027】従来は、 6789×7531= 6789×4000 +6789×400 +6789×20
+6789×1+6789×2000 +6789×100 +6789×10+678
9×1000 本発明では、 6789×7531= 6789×8000+6789×(-400)+6789×(-6
0) +6789×(-8)+6789×(-1) として演算して、同じ結果が得られる。
【0028】
【発明の効果】以上説明したように、本発明によれば、
被乗数の偶数倍を始めに計算して用意しておき、乗数1
桁の部分積は選択するだけであるので、桁毎に桁合わせ
をして加算を繰り返せばよい。補助的処理として最初の
偶数倍の計算に数サイクルの演算が必要なだけで、乗数
の1桁当たり1サイクルの加算という比較的速い乗算器
を実現することができる。乗数の桁数が多いとき、また
各桁の値が奇数のとき特に効果があり、乗数の各桁の値
によって大きく演算時間が変動することもない。
【図面の簡単な説明】
【図1】本発明の原理構成図である。
【図2】本発明の被乗数の倍数選択説明図である。
【図3】実施例の構成図である。
【図4】具体的数値による演算例である。
【符号の説明】
1 被乗数レジスタ 2 乗数レジスタ 3 倍数保持回路(倍数レジスタ群) 4 桁選択回路 5 倍数選択回路 6 10進加算器 7 部分積レジスタ(シフト機能付レジスタ) 7a 部分積上位レジスタ 7b 部分積下位レジ
スタ 8 制御回路

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 入力された被乗数を保持する被乗数レジ
    スタ(1)と、 入力された乗数を保持する乗数レジスタ(2)と、 被乗数の倍数を保持する倍数保持回路(3)と、 乗数レジスタ(2)の各桁を選択し、その値と1つ上位
    の桁の奇偶とにより判断した倍数値を出力する桁選択回
    路(4)と、 被乗数レジスタ(1)と倍数保持回路(3)とを入力と
    し、桁選択回路(4)の出力値に従って選択した値を、
    10進加算器(6)に出力する倍数選択回路(5)と、 複数桁を同時に演算する符号付の10進加算器(6)
    と、 10進加算器(6)の出力を保持する部分積レジスタ
    (7)と、 全体を制御する制御回路(8)とからなり、 制御回路(8)は、第1段階で、被乗数レジスタ(1)
    の値の偶数倍の各値を10進加算器(6)により生成し
    て倍数保持回路(3)にセットし、 第2段階で、桁選択回路(4)と倍数選択回路(5)と
    によって、乗数の下位桁から順に選択し、ある桁におい
    て、1つ上位の桁の値が偶数であるとき、この桁の値が
    偶数のときは、被乗数の、この桁の値倍の値を部分積と
    し、奇数のときは、被乗数の、この桁の値+1 倍の値を
    部分積とし、ある桁において、1つ上位の桁の値が奇数
    であるとき、この桁の値が偶数のときは、被乗数の、こ
    の桁の10の補数倍の負の値を部分積とし、この桁の値が
    奇数のときは、被乗数の、この桁の数+1 の10の補数倍
    の負の数を部分積とするように倍数保持回路内の値を選
    択し、最下位桁で、それが奇数の場合は、選択した部分
    積と、被乗数の−1倍とを加算して部分積レジスタ
    (7)にセットし、それ以外の場合は、選択した部分積
    と、それまでの部分積レジスタ(7)の値とを桁合わせ
    して加算して部分積レジスタ(7)にセットし、最上位
    の桁の場合、一つ上の桁の値は0、すなわち偶数として
    扱うように構成した10進乗算器。
JP22152093A 1993-09-07 1993-09-07 10進乗算器 Expired - Fee Related JP3230349B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP22152093A JP3230349B2 (ja) 1993-09-07 1993-09-07 10進乗算器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP22152093A JP3230349B2 (ja) 1993-09-07 1993-09-07 10進乗算器

Publications (2)

Publication Number Publication Date
JPH0773024A true JPH0773024A (ja) 1995-03-17
JP3230349B2 JP3230349B2 (ja) 2001-11-19

Family

ID=16768003

Family Applications (1)

Application Number Title Priority Date Filing Date
JP22152093A Expired - Fee Related JP3230349B2 (ja) 1993-09-07 1993-09-07 10進乗算器

Country Status (1)

Country Link
JP (1) JP3230349B2 (ja)

Also Published As

Publication number Publication date
JP3230349B2 (ja) 2001-11-19

Similar Documents

Publication Publication Date Title
US6233597B1 (en) Computing apparatus for double-precision multiplication
JPH0713742A (ja) 乗算装置
US4677583A (en) Apparatus for decimal multiplication
US5870322A (en) Multiplier to selectively perform unsigned magnitude multiplication or signed magnitude multiplication
KR0158647B1 (ko) 부호/무부호 수 겸용 곱셈기
JP3660075B2 (ja) 除算装置
JP3230349B2 (ja) 10進乗算器
JPS58129653A (ja) 乗算方式
JPH04256016A (ja) 2の補数の乗算器を無符号数の乗算を行うように修正する方法および装置
JPH0793134A (ja) 乗算器
JP2645422B2 (ja) 浮動小数点演算処理装置
JP3190826B2 (ja) 積和演算装置
JPH0377539B2 (ja)
JP2734438B2 (ja) 乗算装置
JP2991788B2 (ja) 復号器
JP3284690B2 (ja) 10進乗算器
JPH0368415B2 (ja)
JP3855491B2 (ja) 乗算器
JP2777265B2 (ja) 高基数開平演算装置
JP3106767B2 (ja) 乗算方法及び乗算回路
JP3130797B2 (ja) 積和演算処理方法およびその装置
JPH10312269A (ja) 積和演算器
JP3241642B2 (ja) 2進10進変換回路
JP3247759B2 (ja) 演算処理装置
JPH02114324A (ja) 乗算器

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20010814

LAPS Cancellation because of no payment of annual fees