研究紀要第25号 学習指導に関する研究 - 045/060page
ダンプは本来「エラー等,緊急事態が生じたときに用いるもので,利用者が一般に用いるものではない」と言われている。
しかしながら,前述のプログラムで,もし「*」の位置がどのように格納されているのかを知らないでいれば,たとえば「R (T)⇒*」をFORMAT(A1)でグラフを画せても,何にも印字してくれない……という問題を解明することができないことになる。ダンプの必要性にふれてみたが,話しをもとにもどして,16進法とその機械のハード的制約を理解していれば,つぎのような問題に答えることもできようという点にふれてみたい。
下のプログラムのWRITE文でA,B,Cの答えがおかしいのはなぜだろうか。
12000.210 0.03 12000.230
12000.210 0.03 12000.240それは
(12000.210)10=0.2EEO35C28F5C28……×164
(0.03)10=0.7AE147AE14……×16-1であるけれども,センターの機械では16進で実数単精度演算を行うと6桁の有効数字しかとれないので
のようになる。
これを計算して,(10進)になおしてみると
(2×165+E×164+E×163+3×161+D×160)×16-2160 = 1
161 = 16
163 = 4096
164 = 65536
165 = 1048576によって計算すると
しかし,センターの機械は10進の場合7.2桁までしか有効でなく,また0.2桁以降は切り捨てることになっているため,ラインプリンタ上には12000.230
と印字されるのである。