ページの作成:「== 概要 == ここでは、大きな桁数の計算を行うアルゴリズムを記載する。<br> <br><br> == 値の表現方法 == 大きな桁数の計算を行う…」 |
編集の要約なし |
||
| 4行目: | 4行目: | ||
== 値の表現方法 == | == 値の表現方法 == | ||
大きな桁数の計算を行うために、値を配列で持たせるとする。 | 大きな桁数の計算を行うために、値を配列で持たせるとする。<br> | ||
1つの要素に2桁ずつ値を格納して、それを配列として持つことにより大きな桁数を扱うことができる。 | 1つの要素に2桁ずつ値を格納して、それを配列として持つことにより大きな桁数を扱うことができる。<br> | ||
<br> | |||
* 500を表現する場合 | * 500を表現する場合 | ||
*: ar[4]=00 ar[3]=00 ar[2]=00 ar[1]=05 ar[0]=00 | *: ar[4]=00 ar[3]=00 ar[2]=00 ar[1]=05 ar[0]=00 | ||
| 20行目: | 20行目: | ||
== 加算 == | == 加算 == | ||
加算の桁の繰り上がりにおいて、下図のパターンが考えられる。 | 加算の桁の繰り上がりにおいて、下図のパターンが考えられる。<br> | ||
# 99より大きな値を見つけたら現在の要素から100を減算して、上の要素に1を繰り上げる。 | # 99より大きな値を見つけたら現在の要素から100を減算して、上の要素に1を繰り上げる。 | ||
# -99より小さな値を見つけたら現在の要素から-100を減算して、上の要素に-1を繰り上げる。 | # -99より小さな値を見つけたら現在の要素から-100を減算して、上の要素に-1を繰り上げる。 | ||
| 26行目: | 26行目: | ||
# 全体が-であり、現在の要素が+である場合、上の要素から-1を減算して、現在の要素に-100を加算する。 | # 全体が-であり、現在の要素が+である場合、上の要素から-1を減算して、現在の要素に-100を加算する。 | ||
<br> | <br> | ||
2つの配列の要素を加算して、1〜4の処理を添え字の小さい値から順に繰り返すことで、加算が出来る。 | 2つの配列の要素を加算して、1〜4の処理を添え字の小さい値から順に繰り返すことで、加算が出来る。<br> | ||
<br> | <br> | ||
[[ファイル:C Multiple Length Calc 1.jpg|フレームなし|中央]] | |||
<br><br> | <br><br> | ||
== 減算 == | == 減算 == | ||
減算は、減算する値の符号を反転させることで、加算で代用できる。 | 減算は、減算する値の符号を反転させることで、加算で代用できる。<br> | ||
100 - 10 → 100 + (-10) | 100 - 10 → 100 + (-10) | ||
<br><br> | <br><br> | ||
== 乗算 == | == 乗算 == | ||
乗算は、加算を繰り返すことでできるが、時間が掛かりすぎる。 | 乗算は、加算を繰り返すことでできるが、時間が掛かりすぎる。<br> | ||
そこで、筆算で計算する手順と同じ手順で計算する。 | そこで、筆算で計算する手順と同じ手順で計算する。<br> | ||
<br> | <br> | ||
下図において、1020×523の場合を示す。<br> | 下図において、1020×523の場合を示す。<br> | ||
[[ファイル:C Multiple Length Calc 2.jpg|フレームなし|中央]] | |||
<br><br> | <br><br> | ||
== 除算 == | == 除算 == | ||
除算は、被除数から法を繰り返して減算すれば計算できるが、時間が掛かりすぎる。 | 除算は、被除数から法を繰り返して減算すれば計算できるが、時間が掛かりすぎる。<br> | ||
そこで、シフトを使用して計算する。 | そこで、シフトを使用して計算する。<br> | ||
<br> | |||
[[ファイル:C Multiple Length Calc 3.jpg|フレームなし|中央]] | |||
<br><br> | <br><br> | ||