(57)【要約】      （修正有）【課題】コンピューター等の電子回路でかけ算などの演算を行う際に、演算結果値の一覧表を参照して値を得る演算方法、および当該演算方法を行うための演算表を提供する。【解決手段】２＾ｎ進法プロセスによってかけ算などの演算を行うことで、前項の問題を解決する。ただし、各桁ごとの計算をリアルタイムで行わず、計算の結果値をあらかじめ記録した一覧表を参照することで演算処理を簡略化する。【選択図】図１
2006040241.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ等の電子回路でかけ算などの演算を行う際に、ｎビット（ｎは整数）の値同士の演算結果値をあらかじめ記録した一覧表を参照して値を得る演算方法
【請求項２】
前項の方法で演算を行うための、ｎビットの値同士の演算結果一覧表。
【発明の詳細な説明】
【技術分野】
【０００１】コンピュータ等の電子回路の演算プロセスに関する。
【背景技術】
【０００２】通常、コンピュータに付随する演算プロセッサ等の電子回路が行うかけ算などの演算処理は、２進法によってリアルタイムに行われる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】２進法によるかけ算などの演算処理は、そのプロセスが単純である反面、桁数が多いため、非常に多数回の繰り返し計算が必要となる。
【課題を解決するための手段】
【０００４】２＾ｎ進法（ｎは整数）プロセスによってかけ算などの演算を行うことで、前項の問題を解決する。ただし、各桁ごとの計算をリアルタイムで行わず、計算の結果値をあらかじめ記録した一覧表を参照することで演算処理を簡略化する。
【発明の効果】
【０００５】少ないクロック回数で、かつ簡易なプロセスで、演算処理が可能となる。
【発明を実施するための最良の形態】
【０００６】”０００００００１”×”０００００００１”＝”０００００００００００００００１”
”０００００００１”×”００００００１０”＝”００００００００００００００１０”
・
・
・
”１１１１１１１１”×”１１１１１１１１”＝”１１１１１１１００００００００１”
と、いうように、８ビット（２５６進数１桁）の２つの数Ｘ、Ｙの積は１６ビット（２５６進数２桁）の値で表される。これを一覧表にすると、２５６進数版のかけ算九九表ができる。この各値を、演算プロセッサに付随するメモリ（ＲＯＭ）内のアドレス（Ｘ，Ｙ，０〜１）にそれぞれ記録しておく。【０００７】そして、かけ算Ｘ×Ｙの演算は、当該メモリ内のアドレス（Ｘ，Ｙ，０〜１）を参照することでその値を得る。すなわち、被演算子となる２つの変数が、そのままメモリのポインタとしてふるまう。参照値１６ビット中、下位８ビットのブロック（Ｘ，Ｙ，０）が当該桁の値で、上位８ビットのブロック（Ｘ，Ｙ，１）が次桁への繰り上がりとなる。【０００８】かけ算表と同様に、足し算Ｘ＋Ｙの演算値表を作成し、各計算値を、対応するメモリ内のアドレス（Ｘ，Ｙ，０〜１）に記録しておく。【０００９】そして、足し算Ｘ＋Ｙの演算は、当該メモリ内のアドレス（Ｘ，Ｙ，０〜１）を参照することでその値を得る。参照値の下位８ビット（Ｘ，Ｙ，０）が当該桁の値で、その上位ビット（Ｘ，Ｙ，１）が次桁への繰り上がりとなる。【００１０】かけ算表、足し算表と同様に、引き算ｘ−ｙの演算値表を作成し、各計算値を、対応するメモリ内のアドレス（Ｘ，Ｙ，０〜１）に記録しておく。【００１１】そして、引き算Ｘ−Ｙの演算は、当該メモリ内のアドレス（Ｘ，Ｙ，０〜１）を参照することでその値を得る。参照値の下位８ビット（Ｘ，Ｙ，０）が当該桁の値で、その上位ビット（Ｘ，Ｙ，１）が次桁からの繰り下がりを表す。【００１２】１より大きい任意の数Ｘについて、Ｘの逆数１÷Ｘの演算表を作成し、各計算値（小数２桁）を、対応するメモリ内のアドレス（Ｘ，０〜１）に記録しておく。【００１３】そして、１÷Ｘの演算は、当該メモリ内のアドレス（Ｘ，０〜１）を参照することでその値を得る。
【実施例】
【００１４】かけ算表（図１）を参照する手続きを用いて、２５６進数のかけ算を（図５）のように行う。このアルゴリズムは、２つの正の値Ａ，Ｂの積を変数ＶＡＬＵＥ（初期値＝０）に加算する。変数の説明については、後述の通りである。【００１５】２桁以上のかけ算は、全ての（ｉ，ｊ）について、（図５）の処理を繰り返す。ただし、入出力に用いる変数が浮動小数点形式の場合などにおいて、値が入力されない桁は計算不要である。ｉ，ｊの値域は任意に定義可能であり、配列ａ（ｉ），ｂ（ｊ）は必要な個数のみ用意されれば良い。【００１６】足し算表（図２）を参照する手続きを用いて、２５６進数の足し算を（図６）のように行う。このアルゴリズムは、任意の値Ａを変数ＶＡＬＵＥ（初期値＝０）に加算する。【００１７】２桁以上の足し算は、全てのｉについて、（図６）の処理を繰り返す。【００１８】複数の値の足し算は、全ての値について、（図６）の処理を繰り返す。【００１９】（図６）中の代入式、ｉ＝ｉ＋１について、再帰処理（足し算プロセス（図６）の再引用）は使用しない。ｉ＜２５５であれば、繰り上がりの処理は必要ないため、足し算表の下位８ビットを代入するだけでよい。１を加算する処理専用の関数（および当該処理専用の演算値表）や、繰り上がり処理専用のルーチンを、独立して用意してもよい。【００２０】引き算表（図３）を参照する手続きを用いて、２５６進数の引き算を（図７）のように行う。このアルゴリズムは、任意の値Ａを変数ＶＡＬＵＥから減算する。【００２１】２桁以上の引き算は、全てのｉについて、（図７）の処理を繰り返す。【００２２】（図６）の処理と（図７）の処理は、変数Ａの補数をとるなどの方法によって、相互に代替可能であり、利便性に応じて使い分けが可能である。例えば、小さい値を引き算する場合、当該値の補数をとると上位の全ビットに”１”が並ぶことになるため、足し算プロセスで行うと多数回の繰り上がりが発生する可能性があり、効率的ではない。あるいは、割り算を引き算の繰り返しによって行う場合など、（図３）の引き算表は比較論理演算の結果表も兼ねており、便利である。また、計算に用いる変数の形式について、負の値を絶対値で表す方式、例えば−１を”０＋１１１１１１１１”ではなく”０＋０００００００１”と表記する方法を用いて全ての演算をすることも、演算子と正負符号の組み合わせによって足し算か引き算かを選択することで、容易に実現できる。ただしその場合、計算結果値を絶対値表記で返すようにするには、絶対値の大小によって引き算の被演算子を入れ替える処理が必要となる。【００２３】逆数表（図４）を参照する手続きを用いて、２５６進数の割り算を（図８）のように行う。（図５）のアルゴリズムを利用して、Ｂの逆数とＡとの積を変数ＶＡＬＵＥに代入する。【００２４】この処理方法では、逆数表（図４）の容量によって変数Ｂ，ｒｅｃｉｐのサイズが限定されるため、計算の精密さと汎用性が求められる用途には不向きである。例えば画像データの加工処理など、大量の計算を高速に行いたい場合などにメリットが見いだせる。【００２５】一般に、Ｂ＝０のときＡ÷Ｂは計算できない。しかし実際には、計算の過程で偶発的にＢの値が見かけ上０���なっていても、エラーとして処理を中止せずにプログラムを継続させたい場合も多くあり得る。（図８）のアルゴリズムでは、変数Ｂの全ビットに”０”が入力されていても、必ずしも完全な０とはみなさず、非常に０に近い値とみなして計算を続行する。Ｂ＝０のときエラーを出力したい場合には、変数Ｂを（図８）の処理に渡す前に、値のチェックを行うとよい。特に正負符号付きの計算の場合については、非常に大きな誤差を生じうるので留意が必要である。
【図面の簡単な説明】
【図１】かけ算（Ｘ×Ｙ）表である。メモリのアドレス表も兼ねる。
【図２】足し算（Ｘ＋Ｙ）表である。メモリのアドレス表も兼ねる。
【図３】引き算（Ｘ−Ｙ）表である。メモリのアドレス表も兼ねる。
【図４】逆数（１÷Ｘ）表である。メモリのアドレス表も兼ねる。
【図５】２５６進数のかけ算処理の流れ図（ＰＡＤによる表記）である。
【図６】２５６進数の足し算処理の流れ図である。
【図７】２５６進数の引き算処理の流れ図である。
【図８】２５６進数の割り算処理の流れ図である。
【変数の説明】
Ａ，Ｂ：  被演算子となる変数。処理プロセスの構造上、変数のサイズは                        ８ビット単位で指定されるのが望ましい。
ＶＡＬＵＥ：  演算の計算値を代入する変数。初期値＝０。値を初期値０に戻                        すまで、計算値が累計されていく。
ａ（ｉ），ｂ（ｉ）：  ２５６進数Ａ，Ｂの１桁目を「第０桁」とするとき、第ｉ桁目                        の数を表す。
ｖａｌｕｅ（ｉ）：  ２５６進数ＶＡＬＵＥの１桁目を「第０桁」とするとき、第ｉ                        桁目の数を表す。
ｐｒｏｄｕｃｔ（ｉ）：  ａ，ｂの積のうち、第ｉ桁目の数を表す。
【図１】
2006040241.tif 000003
【図２】
2006040241.tif 000004
【図３】
2006040241.tif 000005
【図４】
2006040241.tif 000006
【図５】
2006040241.tif 000007
【図６】
2006040241.tif 000008
【図７】
2006040241.tif 000009
【図８】
2006040241.tif 000010