ページの作成:「== 概要 == ここでは、大きな桁数の計算を行うアルゴリズムを記載する。<br> <br><br> == 値の表現方法 == 大きな桁数の計算を行う…」
 
編集の要約なし
 
(同じ利用者による、間の1版が非表示)
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>
<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>


458行目: 457行目:
  }
  }
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
__FORCETOC__
[[カテゴリ:C]]