150 likes | 377 Views
情報数学1 第 3-1 章. 多進法の原理と変換算法. 香川大学工学部 富永浩之 tominaga@eng.kagawa-u.ac.jp. 概 要. ■ 自然数の記数法 位取記数法、多進法と多進法 ■ 多進法の原理 切捨 切上 四捨五入 ガウス記号 ■ 多進数への変換 多進数への変換 ■ 多進数からの変換とホーナー法 多進数からの変換 ホーナー法 ■ 多進法 の 例題. 第 01 節 [1] 自然数の記数法. ● 自然数の記数法 何ら かの体系的な規則に従った記号列により 、
E N D
情報数学1 第3-1章 多進法の原理と変換算法 香川大学工学部 富永浩之 tominaga@eng.kagawa-u.ac.jp
概 要 • ■ 自然数の記数法 • 位取記数法、多進法と多進法 • ■ 多進法の原理 • 切捨 切上 四捨五入 ガウス記号 • ■ 多進数への変換 • 多進数への変換 • ■ 多進数からの変換とホーナー法 • 多進数からの変換 ホーナー法 • ■ 多進法の例題
第01節 [1] 自然数の記数法 • ● 自然数の記数法 • 何らかの体系的な規則に従った記号列により、 • 数を表記する方法を総称して記数法[algorism]という。 • ● 位取記数法 • 空位0で、数字の位置である桁[digit]を区別する。 • 有限個の数字で幾らでも大きな数を表記できる。 • ● 多進法 • rずつ束にすることを段階的に繰り返し、 • 0~r-1 のr種の数字を使って自然数を表す方法を、 • rを基数[radix]とする多進法または単にr進法という。
第01節 [2] 数の歴史 • ● 古代 • ○ インド 0の発見、10進数、数字0~9の使用 • ○ バビロニア 60進数、楔形文字の数字 • ○ ローマ 木の棒の刻み目、ローマ数字の起源 • 3999まで、計算に不向き • ○ 中国 漢数字、位ごとに別の漢字、算盤の使用 • ● 中世 • ○ アラビア インドのアラビア数字の普及 • アラビア商人は東西文化の懸け橋 • ○ ヨーロッパ アラビア商人からイタリア商人へ • フィボナッチ「算盤の書」 筆算の解説書
第02節 [1] 十進法系と二進法系 • ● 十進法系 人間の手指の本数から • ● 二進法系 電気信号のON/OF • ● 三進法系 正零負の場合分けから(等号、天秤)
第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
第03節 [2] 多進数への変換 • ● 多進数への変換の算法 • [0] 10進数を整商の初期値として右上に書く。基数を左端に書く。 • [1] 整商が基数以上の間、[2][3]の処理を繰り返す。 • [2] 基数による剰余を下段に書く。 • [3] 基数による整商を左に書く。 • [4] 整商が基数未満になったら、各剰余を進法での各桁の数字に直す。 • [5] 各桁での数字を左から順に並べると多進数を得る。
第04節 [1] 多進数からの変換 • ● 多進数からの変換の算法 • [0] 多進数の各桁の数字を並べる。 • [1] A→10, B→11 のように、桁の数字を数値に直しておく。 • [2] 最上位桁の数値 をそのまま初期値とし、最下段に書く。 • [3] 左下のそれまでの途中結果に、基数を乗算し、次の桁の数値の下に書く。 • [4] 桁の数値と乗算した値を加算し、最下段に書く。 • [5] 最下位桁の値を加算した結果が、求める10進数である。
第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
第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
第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の桁数
第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] が成立し、題意を満たす。
第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 となる。
第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 を得る。
第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]が成立し、題意を満たす。