JP2605848B2 - 非回復型除算器 - Google Patents

非回復型除算器

Info

Publication number
JP2605848B2
JP2605848B2 JP63321183A JP32118388A JP2605848B2 JP 2605848 B2 JP2605848 B2 JP 2605848B2 JP 63321183 A JP63321183 A JP 63321183A JP 32118388 A JP32118388 A JP 32118388A JP 2605848 B2 JP2605848 B2 JP 2605848B2
Authority
JP
Japan
Prior art keywords
remainder
dividend
divisor
quotient
positive
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.)
Expired - Lifetime
Application number
JP63321183A
Other languages
English (en)
Other versions
JPH02165326A (ja
Inventor
一郎 山根
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co 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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP63321183A priority Critical patent/JP2605848B2/ja
Publication of JPH02165326A publication Critical patent/JPH02165326A/ja
Application granted granted Critical
Publication of JP2605848B2 publication Critical patent/JP2605848B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Description

【発明の詳細な説明】 産業上の利用分野 本発明は、1ビットのセット、リセット可能なレジス
タを設けることにより、符号付きの除算を高速に行うこ
とのできる非回復型除算器に関するものである。
従来の技術 第2図は、従来の非回復型除算器のブロック図であ
る。第2図において、1は、nビットのレジスタ(SR
H)、2は、mビットのレジスタ(SRL)、3は、nビッ
トのレジスタ(DR)、4は、上記SRH1に上記DR3を加算
または減算する加減算器である。
非回復型除算では回復のための加算が不要であるが、
かわりに前の行での加減算器出力の符号と被除数の符号
が一致するか否かによって、各行での演算を加算と減算
に切り変える必要がある。つまり、減算が失敗したため
に部分剰余の符号が被除数と反対になったときには、商
としては“0"を生成すると同時に、次の行では除数を加
算せねばならない。また、部分剰余の符号が反転しない
ときには、商を1とし、次の行では減算をしなければな
らない。
表1に計算例を示す。
試行演算が失敗したときに除数を右にシフト後(すな
わち1/2にする)加算した場合には、試行演算を行わず
最初から除数の1/2を減算した場合と同一結果を得てい
る。つまり、回復型2進除算において再び加算して部分
剰余を回復後、除数を右にシフトして(除数の1/2)減
算した場合と同一結果を得る。表2はこの対応を表にし
たものである。
すなわち、第2図においての符号なし2進数の除算の
動作は次のようにする。SRH1は最初“0"が代入され、SR
L2は正の被除数Sが代入され、DR3は正の除数Dが代入
される。次に、SRH1,SRL2は1ビット左へシフトされ、
その後SRH1よりDR3を減算し、その結果をSRH1へ返す。
また、そのときの部分剰余、即ち、加減算器の出力が負
であれば減算失敗として“0"を、そうでなければ“1"を
SRL2の最下位ビットに代入する。
次に、また、SRH1,SRL2を1ビット左へシフトし、先
の加減算結果に基づき、加減算を行い、その結果をSRH1
へ返す。また部分剰余の正負により、“1"又は“0"をSR
L2の最下位ビットに代入する。あとは、これを合計m回
繰り返す。
すると、商はSRL2に残り、余はSRH1に残る。但し、余
は負になることが考えられるので、負の場合は最後の減
算に失敗したとして余を回復、即ち、除数Dを加算して
やらねばならない。
発明が解決しようとする課題 しかしながら上記従来の構成では、正の数しか扱えず
負の数の場合は一度正に直してから演算し、演算後、再
び、商余を必要であれば負へ戻すという操作が必要であ
るという欠点を有していた。
本発明は、上記従来の問題点を解決するもので、1ビ
ットのセット、リセット可能なレジスタを設けることに
より、被除数が負である場合にも同一アルゴリズムで除
算が行える非回復型除算器を提供することを目的として
いる。
課題を解決するための手段 この目的を達成するために、本発明の非回復型除算器
は部分剰余が“0"であることを判別するための、各行で
の演算結果が“0"のときセットされ、被除数の各行での
最下位ビットに“1"が入ってきたときリセットされる1
ビットのレジスタを持ち、このレジスタの結果を用い
て、商余の補正を行う。
作用 この構成によって、被除数、または、除数が負である
ときも、簡単に商余の補正が可能であるため、被除数、
または、除数を正の数に置き換え直すことなしに除算を
実行することができる。
実施例 以下、本発明の一実施例について、図面を参照しなが
ら説明する。
第1図は本発明の一実施例における非回復型除算器の
ブロック図であり、1〜4は上記従来例と同様であり、
5は加減算の結果が“0"であった場合、出力(ZFLG)が
“1"となり、SRH1,SRL2のシフト時、SRH1の最下位ビッ
トに“1"が入ってきた場合ZFLGが“0"になるレジスタで
ある。
2の補数表現をとる符号つき数の除算は上記従来例の
符号なし数のアルゴリズムを拡張して実現する。
まず、被除数が正かつ除数が正の場合は、従来と同じ
方法で演算する。
次に、被除数が正かつ除数が負の場合については、上
記被除数が正かつ除数が正の場合の演算に対して加算と
減算を反転することにより実現する。すなわち、(正の
数)÷(負の数)の除算を(正の数)÷(正の数)の演
算に置き換えて行う。このため、得られる商は本来の商
に比べて符号が反転してしまう。従って、商に対して符
号を反転する補正すなわちビット反転し1加算する補正
が必要となる。
また、余は被除数が正かつ除数が正の場合と同様に求
める。但し、余が0未満の場合は、除数が負であるため
除数が正のときと符号を反転した補正すなわち余から除
数を減算して余を0以上にする補正が必要となる。
次に、被除数が負かつ除数が正の場合について説明す
る。
被除数が負の場合も、演算は基本的に被除数が正の場
合と同じ方式で行い、後で商及び余の補正を行う。
もともと、非回復型除算の方法は、被除数が正である
ことを前提としたものであるため、被除数が負である場
合には対応できない。
すなわち、非回復型除算の方法の本質的な考え方は、
被除数から除数を減算しすぎた場合は次で加算を行い、
一方加算しすぎた場合は次で減算を行うことにより商及
び余を求めるものである。これに対して、本発明で採用
している演算方法によれば非回復型除算の方法は被除数
が正か負であるに関わらず、部分剰余が正である場合は
減算を行い、負である場合は加算を行う。このため、被
除数が負である場合は、被除数が正である場合に対して
減算しすぎたかまたは加算しすぎたかを逆に判断してし
まい、加算と減算とが逆に行われることになる。
従って、被除数が負かつ除数が正の場合に上記演算に
より得られる商は、被除数が正かつ除数が正の場合の商
をビット反転したものに等しくなる。
ところが、本来被除数が負かつ除数が正の場合の商は
被除数が正かつ除数が正の場合の商を符号反転すなわち
ビット反転し1加えたものでなければならない。従っ
て、上記演算によりビット反転のみした商が得られると
いうことは、本来の商より1少ない商が得られたことに
なる。
このため、被除数が負かつ除数が正の場合は、得られ
た商に1加える補正が必要となる。
ここで注意すべき事は、部分剰余が“0"かつシフトの
とき入力される全データが“0"である場合すなわち余が
なく割り切れた場合、被除数が負であるにも関わらず正
の場合の商に対して単に符号を反転した商が得られるこ
とである。
図4を用いて、“−6÷3"すなわち“(11010)÷
(011)を例にとり説明する。
図4(a)に示すように、商(110)と余(101)
とを得るが、下位から2ビット目の商“1"が問題とな
る。すなわち、この商“1"は部分剰余“000"を判断した
ことに基づくものであるが、上述のように被除数が正か
つ除数が負である場合の除算と全く逆に除算を行うため
には、部分剰余“000"を負と判断し商“0"を得るととも
に次段では加算を行わなければならない。
ところが、2の補数において“000"は正の数であるた
め、部分剰余が“000"であっても正の数と判断し減算し
てしまう。このため、3つ目の部分剰余が“000"となっ
てしまい、下位から1ビット目の商が“0"となる。
従って、図4(b)に示す被除数が正かつ除数が正で
ある“6÷3"の商(010)と対比すると、“−6÷3"
ではビット反転し1加算された商(110)すなわち単
に符号を反転した商が得られることとなる。
このように、被除数が負かつ除数が正であって部分剰
余が“0"かつシフトのとき入力される全データが“0"で
ある場合は、被除数が除数で割り切れないときと比べて
1加えたものが商として得られる。すなわち、補正が不
要な商が得られる。従って、部分剰余が“0"かつシフト
のとき入力される全データが“0"である場合を検出した
場合には商の補正を行わない。
なお、部分剰余が“0"かつシフトのとき入力される全
データが“0"である場合は必ず被除数が除数で割り切れ
るが、被除数が除数で割り切れる場合であっても部分剰
余が“0"かつシフトのとき入力される全データが“0"と
ならない場合がある。
また、余についても被除数が正かつ除数が正の場合
と、実質的に同じ方式で補正をする必要がある。
具体的には、被除数が負であることから余は負でなけ
ればならないので、余が0以上のときは補正を行う必要
がある。従って、この場合は被除数が正かつ除数が正の
場合の余の補正について符号を反転した補正、すなわち
余から除数を減算する補正を行う。なお、余が0以上で
あるときは補正を行う必要はない。
但し、部分剰余が“0"かつシフトのとき入力される全
データが“0"の場合は、被除数が除数で割り切れること
を意味するので、余を“0"にする補正を行う。
次に、被除数が負かつ除数が負の場合について説明す
る。
この場合、被除数が正かつ除数が負の場合と、基本的
に同じ方式で演算を行う。
このため、被除数が負かつ除数が正の場合と同様に、
被除数が正かつ除数が負の場合の商をビット反転したも
のが商として得られる。ここで、除数が負の場合の商は
上述した除数が正の場合の商の符号を反転したものとな
るので、本来の商に1加えた商が得られたことになる。
従って、被除数が負かつ除数が負の場合、得られた商
をビット反転する補正が必要となる。
但し、部分剰余が“0"かつシフトのとき入力される全
データが“0"である場合、被除数が負かつ除数が正のと
きと同様に被除数が除数で割り切れないときの商に1加
えたものが商として得られる。従って、被除数が負かつ
除数が正の場合と同じ補正を行う必要がある。
また、余についても被除数が正かつ除数が負の場合
と、実質的に同じ方式で補正をする必要がある。
具体的には、被除数が負かつ除数が正の場合と同様に
被除数が負であることから余は負でなければならないの
で、余が0以上のときは補正を行う必要がある。従っ
て、この場合は被除数が正かつ除数が負の場合の余の補
正について符号を反転した補正、すなわち余に除数を加
算する補正を行う。なお、余が0以上であるときは補正
を行う必要はない。
但し、部分剰余が“0"かつシフトのとき入力される全
データが“0"の場合は、被除数が除数で割り切れること
を意味するので、余を“0"にする補正を行う。
第3図に8ビットの被除数(11011010)=(−38)
10を4ビットの除数(1101)=(−3)10で割った例
の算出フローチャートを示す。被除数は、SRL2(m=
8)に収められ、SRH1(n=5)には、SRL2が符号拡張
され、(11111)が入る。除数は符号拡張され(1110
1)が入る。
まず、左シフトが行われ、SRH1に(11111)が入
る。このとき、最下位ビットは“1"であるから、ZFLGは
リセットされる。次に、初期qが“0"として減算が行わ
れる。ここでは減算の結果(00010)であるため、ZFL
Gは保持されたままである。次に、再び左シフトが行わ
れ、SRH1に(00101)が入る。このとき、上記同様最
下位ビットは“1"であるため、ZFLGはリセットされる。
但し、値は実際には変化していないのと同じである。次
にq0が“1"であったので加算を行う。ここでは加算の結
果は(00010)のためZFLGは保持される。以下は同様
の過程を繰り返し、最終的に商(11110011)、余(00
01)を得る。ここで加減算の対応と商余の補正を第3
表に示す。
商は、上記第3表より、被除数は負、除数は負、ZFLG
は“0"であるから、ビット反転すればよい。また、余
は、余+除数を求めればよい。すると、商(00001100)
=12、余(0001)+(1101)=(1110)=−2
を得る。これは、(−38)÷(−3)=12…(−2)の
答えと一致している。
さて、第3表に示した論理であるが、各制御信号は簡
単である。
初期q信号は、被除数の符号ビットの反転をとればよ
い。また、加算、減算は、除数の符号ビットとq信号で
制御する。ZFLGは上記の通りであり、余の正負は余の符
号ビットで判別できる。
なお、被除数が“0"の場合、上記手順で商余を求める
とZFLGにセット、リセットが一度もかからず、値が初期
値のままであることが考えられる。この場合、初期値は
セットされていても、リセットされていても商余は正し
いのであるが、ZFLGの初期値を“1"にすることで余の補
正において、被除数が負であり、ZFLG=“1"のとき、余
に“0"を代入するという補正を被除数が正のときにも行
っても支障がないため、回路を軽減できる。また、シミ
ュレーション等で不確定の信号を残さないため、回路検
討時の負担を軽減できる。
発明の効果 本発明によれば、セット、リセット可能な1ビットの
レジスタを設けることにより、被除数、又は、除数が負
である場合に、一度正の数に置きなおして除算するとい
う過程を省略でき、高速に、また、符号によらない一定
のアルゴリズムで商余を求めることのできる優れた非回
復型除算器を実現できる。
【図面の簡単な説明】 第1図は本発明の一実施例非回復型除算器のブロック
図、第2図は従来例非回復型除算器のブロック図、第3
図は8ビット÷4ビット算出のフローチャート、第4図
は被除数が負かつ除数が正の場合および被除数が正かつ
除数が正の場合の除算のフローチャートである。 1……nビットのレジスタ(SRH)、2……mビットの
レジスタ(SRL)、3……nビットのレジスタ(DR)、
4……加減算器、5……1ビットのセットリセット,可
能なレジスタ(ZFLG)。

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】部分剰余が“0"のときセットされ、前記部
    分剰余のシフトのとき入力されるデータが“1"のときリ
    セットされるレジスタを有し、 被除数が正かつ除数が正の場合、商に補正を行わないと
    ともに、余が0以上のときは余に対して補正を行わず、
    また余が0未満のときは余に対して除数を加算する補正
    を行い、 被除数が正かつ除数が負の場合、商に対してビット反転
    し1加算する補正を行うとともに、余が0以上のときは
    余に対して補正を行わず、また余が0未満のときは余に
    対して除数を減算する補正を行い、 前記レジスタのデータが“0"、被除数が負かつ除数が正
    の場合、商に対して1を加える補正を行うとともに、余
    が0以上のときは余に対して除数を減算する補正を行
    い、また余が0未満のときは余を補正せず、一方前記レ
    ジスタのデータが“1"、被除数が負かつ除数が正の場
    合、商に対して補正しないとともに、余を“0"とする補
    正を行い、 前記レジスタのデータが“0"、被除数が負かつ除数が負
    の場合、商に対してビットを反転する補正を行うととも
    に、余が0以上のときは余に対して除数を加算する補正
    を行い、また余が0未満のときは余を補正せず、一方前
    記レジスタのデータが“1"、被除数が負かつ除数が負の
    とき、商に対してビットを反転し1加算する補正を行う
    とともに、余を“0"とする補正を行うことを特徴とする
    非回復型除算器。
JP63321183A 1988-12-20 1988-12-20 非回復型除算器 Expired - Lifetime JP2605848B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63321183A JP2605848B2 (ja) 1988-12-20 1988-12-20 非回復型除算器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63321183A JP2605848B2 (ja) 1988-12-20 1988-12-20 非回復型除算器

Publications (2)

Publication Number Publication Date
JPH02165326A JPH02165326A (ja) 1990-06-26
JP2605848B2 true JP2605848B2 (ja) 1997-04-30

Family

ID=18129715

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63321183A Expired - Lifetime JP2605848B2 (ja) 1988-12-20 1988-12-20 非回復型除算器

Country Status (1)

Country Link
JP (1) JP2605848B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2720172B1 (fr) * 1994-05-20 1996-06-28 Sgs Thomson Microelectronics Dispositif de mise en Óoeuvre numérique d'une opération de division.
JP5870699B2 (ja) * 2012-01-10 2016-03-01 ミツミ電機株式会社 センサ出力補正回路及びセンサ出力補正装置、並びにセンサ出力補正方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0619704B2 (ja) * 1986-08-20 1994-03-16 日本電気株式会社 除算装置

Also Published As

Publication number Publication date
JPH02165326A (ja) 1990-06-26

Similar Documents

Publication Publication Date Title
JP2835153B2 (ja) 高基数除算器
US4992969A (en) Integer division circuit provided with a overflow detector circuit
JPH01144122A (ja) 除算回路
US9009209B2 (en) Processor, control method of processor, and computer readable storage medium storing processing program for division operation
JP2605848B2 (ja) 非回復型除算器
JP3544821B2 (ja) 除算回路
JPH0317132B2 (ja)
JPH0511980A (ja) 桁あふれ検出方式とその回路
JPH0374419B2 (ja)
JP2645422B2 (ja) 浮動小数点演算処理装置
JPH07118654B2 (ja) 算術演算装置
JP2991788B2 (ja) 復号器
GB2116757A (en) Division apparatus
JP3071607B2 (ja) 乗算回路
CN115809041B (zh) 一种可配置的补码运算装置及计算设备
JP2664750B2 (ja) 演算装置及び演算処理方法
JPS63259767A (ja) 平均値回路
JP4042215B2 (ja) 演算処理装置およびその方法
JP2995721B2 (ja) 除算装置および除算方法
JPH0426495B2 (ja)
JP3213982B2 (ja) 除算回路
JPH06195206A (ja) 除算器
JP3284717B2 (ja) バレルシフタ
JPH0799496B2 (ja) 浮動小数点仮数部桁合わせ回路
JPS6346539A (ja) 除算回路