第18講 n進数演算−−−加法
第5話 足し算の考え方

足し算はどのようにしたら実現できるでしょうか。
下の5進数の場合の足し算を例にして考えてみましょう。
     32014
    + 1204
最後に、終わり記号5が入っていますから
     532014
    + 51204
です。
しかし、終わりの記号5
(5進数では0から4までの数字しか入りませんから5が入ることがないので、
終わり記号の意味を持たせることが出来ます。)
は表示のときに、威力を発揮したわけですが、
足し算などの加減乗除では、いろいろいたずらをしますので、
一端、終わり記号nを0に戻しておいて
処理が終わってから再びnに直します。


    032014
   +001204

こうする利点は終わり記号5に邪魔されないだけでなく、
どちらの桁数の方が大きいのかをいちいち考えなくて済むことになります。
    001204
   +032014
でも全く問題ないわけです。

さて、
    032014
   +001204

に戻して説明を続けましょう。
まず、1の位の和はc(0)=a(0)+b(0)の計算から、
c(0)には8が入ります。
5進数の場合、最大は4までですから
(5)+4(5)=13(5)
です。つまり、繰り上がりが発生します。
c(0)には3を入れて、c(1)には1繰り上げるにはどうしたらよいか、
を解決すれば、足し算は出来ます。
c(0)に3を入れる方は皆さんお分かりですね。
c(0)=(a(0)+b(0)) mod 5
で問題は解決します。
では、1の繰り上げはどうでしょうか
c(1)=c(1)+Integer((a(0)+b(0))/5)
で一応問題は解決します。
8を5で割ったときの商は1ですから。
Int(8/5)=1ですね。

ところが、2番目以降の場合には問題があります。
それは、繰り上げを組み込まなければならないからです。
ですから、
For i=0 To mx
   c(i)=(a(i)+b(i)) mod n
   c(i+1)+=Int((a(i)+b(i))/n)
Next
ではだめなわけです。
これが正しいのはi=0のときのみです。
ですが、これを改良すれば加法プログラムは完成します。

これ以上書くとヒントの領域を越えてしまいますので、
ここまでにします。
では皆さん、プログラムを組んでみることにしましょう。
03154






第4話へ 第6話へ
004

eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
vc++講義へ
excel 2013 2010 2007 vba入門へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
専門用語なしの C言語 C++ 入門(Visual C++ 2010で学ぶ C言語 C++ 入門)
専門用語なしの excel vba マクロ 入門 2013 2010 2007 対応講義 第1部
eclipse java 入門へ
excel 2016 vba 入門へ
小学生からエンジニアまでのRuby入門へ
本サイトトップへ