1 / 15

多進法の原理と変換算法

情報数学1 第 3-1 章. 多進法の原理と変換算法. 香川大学工学部 富永浩之 tominaga@eng.kagawa-u.ac.jp. 概 要. ■ 自然数の記数法 位取記数法、多進法と多進法 ■ 多進法の原理 切捨 切上 四捨五入 ガウス記号 ■ 多進数への変換 多進数への変換 ■ 多進数からの変換とホーナー法 多進数からの変換 ホーナー法 ■ 多進法 の 例題. 第 01 節 [1] 自然数の記数法. ● 自然数の記数法 何ら かの体系的な規則に従った記号列により 、

rosine
Download Presentation

多進法の原理と変換算法

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 情報数学1 第3-1章 多進法の原理と変換算法 香川大学工学部 富永浩之 tominaga@eng.kagawa-u.ac.jp

  2. 概 要 • ■ 自然数の記数法 • 位取記数法、多進法と多進法 • ■ 多進法の原理 • 切捨 切上 四捨五入 ガウス記号 • ■ 多進数への変換 • 多進数への変換 • ■ 多進数からの変換とホーナー法 • 多進数からの変換 ホーナー法 • ■ 多進法の例題

  3. 第01節 [1] 自然数の記数法 • ● 自然数の記数法 • 何らかの体系的な規則に従った記号列により、 • 数を表記する方法を総称して記数法[algorism]という。 • ● 位取記数法 • 空位0で、数字の位置である桁[digit]を区別する。 • 有限個の数字で幾らでも大きな数を表記できる。 • ● 多進法 • rずつ束にすることを段階的に繰り返し、 • 0~r-1 のr種の数字を使って自然数を表す方法を、 • rを基数[radix]とする多進法または単にr進法という。

  4. 第01節 [2] 数の歴史 • ● 古代 • ○ インド 0の発見、10進数、数字0~9の使用 • ○ バビロニア 60進数、楔形文字の数字 • ○ ローマ 木の棒の刻み目、ローマ数字の起源 • 3999まで、計算に不向き • ○ 中国 漢数字、位ごとに別の漢字、算盤の使用 • ● 中世 • ○ アラビア インドのアラビア数字の普及 • アラビア商人は東西文化の懸け橋 • ○ ヨーロッパ アラビア商人からイタリア商人へ • フィボナッチ「算盤の書」 筆算の解説書

  5. 第02節 [1] 十進法系と二進法系 • ● 十進法系 人間の手指の本数から • ● 二進法系 電気信号のON/OF • ● 三進法系 正零負の場合分けから(等号、天秤)

  6. 第03節 [1] 多進数への変換 • ● 多進数の基底表現と整除表現 • ○ 基底表現46 = 1201[3] =1×33+2×32+0×31+1×30 • 多進数の直接的表現 • ○ 整除表現46 = 1201[3] = ((1×3+2)×3+0)×3+1 • 効率的な変換算法のための式 • ● 基底表現と整除表現の計算回数 • ○ 基底表現 乗算 p(p-1)/2回 加算 p-1回 • ○ 整除表現 乗算 p-1回 加算 p-1回 • ● 基底表現の原理 • 除法の定理の連続的な適用 46÷3=15‥1 15÷3=5‥0

  7. 第03節 [2] 多進数への変換 • ● 多進数への変換の算法 • [0] 10進数を整商の初期値として右上に書く。基数を左端に書く。 • [1] 整商が基数以上の間、[2][3]の処理を繰り返す。 • [2] 基数による剰余を下段に書く。 • [3] 基数による整商を左に書く。 • [4] 整商が基数未満になったら、各剰余を進法での各桁の数字に直す。 • [5] 各桁での数字を左から順に並べると多進数を得る。

  8. 第04節 [1] 多進数からの変換 • ● 多進数からの変換の算法 • [0] 多進数の各桁の数字を並べる。 • [1] A→10, B→11 のように、桁の数字を数値に直しておく。 • [2] 最上位桁の数値 をそのまま初期値とし、最下段に書く。 • [3] 左下のそれまでの途中結果に、基数を乗算し、次の桁の数値の下に書く。 • [4] 桁の数値と乗算した値を加算し、最下段に書く。 • [5] 最下位桁の値を加算した結果が、求める10進数である。

  9. 第07節 [1] ホーナー法による整式の求値 ● 整式の基底表現と整除表現 ○ 基底表現f(X) =2×X3-3×X2+0×X1+4×X0 ○ 整除表現f(X) = ((2×X+3)×X+0)×X+4 f(X) = 3X5-7X4 +6X3 -7X2 +0X -3 f(2)=((((3×2-7)×2)+6)×2-7)×2+0)×2-3= +1

  10. 第07節 [2] 根号数や複素数への適用 f(X) = X5+2X4-3X3-2X2+3X+2 f(-1+√2) = +7-3√2 f(X) = X5+2X4-2X3-7X2+3X-8 f(-2-i) = -7-2i

  11. 第06節 [1] 多進法の応用問題 • ● 着目点 • ・ 桁数による大きさの見積り • (p桁のr進数Aの10進数での値Tは、rp≦T≦ rp-1 -1 の範囲にある) • ・ 剰余の性質(加法・乗法・累乗との分配律) • ・ 各桁の数字akは基数rを越えない自然数 0≦ak<r • ・ 基数rが未知数のとき、 m桁のr 進数は、 • rに関する m-1次の整式とみることができる • ・ ある数を r1 , r2進法で表した値をA1 , A2とすると、 • r1<r2 ならば、 A1の桁数≧ A2の桁数

  12. 第06節 [2] 多進法の応用問題 • 【例題1】 365[10] は、何進法で表すと 555 になるか。 • 題意は、 365[10]=555[r]と表わされる。 • 基底表現より、二次方程式5r2+5r+5=365 が立つ。 • 整理すると、 (r-8)(r+9)=0 となる。これを解くと、 r=8,-9 となる。 • ここで、多進数の数字として 5 が現れているから、基数は 6 以上である。 • すなわち、r≧6 であるから、r=8となる。よって、8進法である。 • 別解として、多進数の性質を用いて、基数の候補を絞っていく。 • この方法の場合、最後に、十分条件として、実際に題意を満たすことを示す必要がある。 • まず、数字に5が使われているから r≧6である。 • また、555[r]=365[10]<555[10] より r≦9となる。 • さらに両辺を 5 で割って、73[10]=111[r] を得る。 • さらに両辺から 1 を引いて、 72[10]=110[r] を得る。 • よって、r は 72 の約数である。すなわち、6, 8, 9 のいずれかである。 • また、 100[r]=r2<110[r]=72, 200[r]=2r2>111[r]=73 より、 r=8と求められる。 • 実際、365[10]=555[8] が成立し、題意を満たす。

  13. 第06節 [3] 多進法の応用問題 • 【例題2】 80[10] を何進法で表すと各桁が同じ数字の2つ以上の並びになるか。 • 4 3=64≦80<52=125 より、 • 80が r 進表記で 3 桁以上になるのは、r≦4のときである。 • 80[10]=1100[4]=2222[3]=1010000[2] より、r=3 は題意に適する。 • 80が r 進表記で数字 a が 2 桁並ぶ数となるとすると 80=a(r+1) である。 • ただし 、1≦a≦r-1 である。 • したがって、a とr+1は 80 の約数であり、a は 80-a の約数である。 • すなわち、 r の候補は79, 39, 19, 15, 9, 7 であり、 • 80[10]=11[79]=22[39]=44[19]=55[15]=88[9] • なお、r=7 のときは、a=10>r-1 より不適。 • 以上をまとめると、 r=3, 9, 15, 19, 39, 79 となる。

  14. 第06節 [4] 多進法の応用問題 • 【例題3】 u 進法で表すと 47 となり、v 進法で表すと 74 になるような、 • u と v の組を求めよ。 • 題意から、 47[u]=74[v] より4u+7=7v+4 で、 • 一次不定方程式4u-7v=-3 を立てる。 • 4u-7v=4(u-2v)+vw=u-2vとおいて 4w+v=-3 • これから、具体解 w=0, v=-3 さらに、 u=w+2v=-6 • これから、整数パラメタ t を用いて、 • 一般解<u,v>=<-6+7t, -3+4t> が得られる。 • ここで、多進法の桁の数字より8≦v<uでなければならない。 • よって、 8≦-3+4t<-6+7tよりt≧3 を得る。 • ここで、 t-3を改めてパラメタtと置き直して、 • 解<u,v>=<15+7t, 9+4t> ; t≧0 を得る。

  15. 第06節 [5] 多進法の応用問題 • 【例題4】 1108 を r 進法で表すと31a2となるとき、a と r を求めよ。 • r 進数の表記の条件から、大小関係を用いての範囲を絞り込む。 • 題意より、 3000[r]=3r3<1108<4000[r]=4r3が成立するから、 • 247<r3<369+1/3 となる。73=343 より、r=7となる。 • 下図のホーナー法より(1108-2)÷7=158=31a[7] でa=158%7=4 • 別解として、多進数の性質から求める。 • 1108=31a2[r] の両辺から2を引くと、 1106=31a0[r] となる。 • したがって、基数 r は、1106=2×7×79 の約数である。 • r 進数が 10 進数より大きくなっているから、r≦9であり、r=7 と決まる。 • より、158=31a[7]となる。158=7×22+4 より、a=4と求まる。 • 実際、1108=3142[7]が成立し、題意を満たす。

More Related