第28講 n進数演算−−−加法その2
第8話 n進法足し算プログラム解説その7
プログラム主要部分再掲
Sub ts(a() As Integer, b() As Integer, c() As Integer)
  Dim i As Integer, j As Integer
  Dim d(14) As Integer, e(14) As Integer
  Call sy(d())
  Call sy(e())
  Dim asz As Integer, bsz As Integer
  asz = cp(d(), a()) '終わり記号nをなくし、サイズを取得
  bsz = cp(e(), b()) '終わり記号nをなくし、サイズを取得
  Dim max As Integer
  max = asz
  If bsz > max Then max = bsz
  For i = 0 To max
    c(i) = c(i) + d(i) + e(i)
    c(i + 1) = c(i + 1) + Int(c(i) / n)
    c(i) = c(i) Mod n
  Next
  If c(max + 1) > 0 Then c(max + 2) = n Else c(max + 1) = n
End Sub

いよいよ最終コーナーです。

i=7のとき、

13 12 11 10 9 8 7 6 5 4  3 2 1 0
13 12 11 10 9 8 7 6 5 4  3 2 1 0
13 12 11 10 9 8 7 6 5 4  3 2 1 0

    c(7) = c(7) + d(7) + e(7)
       = + +
       = 1
    c(7 + 1) = c(7 + 1) + Int(c(7) / 7)
          = c(8) + Int(1 / 7)
          = 0 + 0
          = 0
すなわち、
       c(8) = 0

    c(7) = c(7) Mod 7
       = 1 Mod 7
       = 1

13 12 11 10 9 8 7 6 5 4  3 2 1 0
13 12 11 10 9 8 7 6 5 4  3 2 1 0
13 12 11 10 9 8 7 6 5 4  3 2 1 0

7の7乗の位が1になり、7の7乗の位にへの繰り上がりはです。


i=8のとき、

13 12 11 10 9 8 7 6 5 4  3 2 1 0
13 12 11 10 9 8 7 6 5 4  3 2 1 0
13 12 11 10 9 8 7 6 5 4  3 2 1 0

    c(8) = c(8) + d(8) + e(8)
       = + +
       = 4
    c(8 + 1) = c(8 + 1) + Int(c(8) / 7)
          = c(9) + Int(4 / 7)
          = 0 + 0
          = 0
すなわち、
       c(9) = 0

    c(8) = c(8) Mod 7
       = 4 Mod 7
       = 4

13 12 11 10 9 8 7 6 5 4  3 2 1 0
13 12 11 10 9 8 7 6 5 4  3 2 1 0
13 12 11 10 9 8 7 6 5 4  3 2 1 0

7の7乗の位が4になり、7の7乗の位にへの繰り上がりはです。
この例ではmax = 8 ですから、
  For i = 0 To max
For文は終了となります。
上の表をよくよく観察して下さい。
7進法の足し算が出来ていることが分かります。
まるで魔法のようではないですか。

さて、最後の1行
  If c(max + 1) > 0 Then c(max + 2) = n Else c(max + 1) = n
を説明して、解説も終わりです。



第7話へ 第9話へ

004

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