yonta24のブログ

健康、ガジェット、テレビなどさまざまな話題を記録するブログです

<アウトプット勉強>Ruby 1 はじめてのプログラミング−その1−(P.0から)

今日からここに、Ruby入門書「Ruby」の学習日誌を始めようと思います。

Ruby 1 はじめてのプログラミング (CD-ROM付) (プログラミング学習シリーズ)

Ruby 1 はじめてのプログラミング (CD-ROM付) (プログラミング学習シリーズ)

はじめに(P.0)

「はじめに」にはこの本はすでに他のプログラムが出来る人向けではなく、Rubyが初めてかつプログラミングやコンピュータの仕組みから初めて見たい人向けの本。という説明があります。少しずつ手順を追って丁寧に説明してくれるのを期待。


ちなみに、私の作った「Rubyの本まとめるサイト」に本の正誤表のありかをまとめています。先に鉛筆などでミスプリ直しておきます。
Rubyの本まとめるサイト>
http://lionlion2121.blog113.fc2.com/blog-category-2.html


<正誤表>

プログラミングとは、考えて、その考えをプログラムという形にして、それをコンピュータに与えることです。だから、とにかく考えて考えてください。(P.0)

第1章 データの基本(P.1から)

コンピュータ自体の基礎から。

1-1 数値の表現(P.3)

手順=プログラム
プログラムを作成すること=プログラミング


データは全て「イチ」と「ゼロ」からできている。


プログラムさえ、「イチ」と「ゼロ」でできている。


なんか、これが不思議。画像などのデータがイチとゼロで出来るというのはイチが黒で、ゼロが白とかになっている模様を想像すると何となくわかるけど、プログラムもイチとゼロで出来ているというのが不思議だ。


それは、きっとプロセッサなどの半導体が働く仕組みが理解できればおのずとわかってくるのかな?この本ではそこまで深くはやらない。


デジタル回路…1と0とを電気的に区別でき、それを利用する回路。


イラスト図解 デジタル回路のしくみがわかる本

イラスト図解 デジタル回路のしくみがわかる本

ゼロからわかる デジタル回路超入門

ゼロからわかる デジタル回路超入門

電子回路シミュレータ TINA7(日本語・Book版)で見てわかる デジタル回路の「しくみ」と「基本」

電子回路シミュレータ TINA7(日本語・Book版)で見てわかる デジタル回路の「しくみ」と「基本」

[rakuten:winss:10000128:detail]
[rakuten:botomz:20410159:detail]
(※このキット激しく興味わいてきた。)


(2010/05/15)
デジタル回路(ディジタル回路?)については、昨日14日、図書館で以下の本を借りてきた。

はじめてつくるデジタル回路 (CompuBooks)

はじめてつくるデジタル回路 (CompuBooks)

ゼロからわかる デジタル回路超入門

ゼロからわかる デジタル回路超入門


「はじめてつくるデジタル回路」の方は、ブレッドボードなんかを自分で買ってきてキットを作りながらデジタル回路について学習できるようになっている。中学生の頃からこんな風な事やってみたかったので、通販で買ってみて実験するつもり。


電子工作と同時に平行して、Ruby本は進めていこうと思っている。なかなか面白そう。


「ゼロからわかる デジタル回路超入門」の方は、座学のみの本こっちも面白そう。


(2010/05/16)
昨日、さらに「ゼロから学ぶディジタル論理回路」を借りた。こっちは、2003年出版の本。実際に工作しながら体験できる。古いので部品の一部がすでに発売中止になっていたりする。

ゼロから学ぶディジタル論理回路 (ゼロから学ぶシリーズ)

ゼロから学ぶディジタル論理回路 (ゼロから学ぶシリーズ)




かなり脱線するが、面白そうなシリーズをアマゾンで見つけたので整理する。
下段の「テキスト版」はテキストのみの販売で電子部品のいらない(自分で用意する人)向け。
販売元:アドウィン(正誤表など公開)
http://www.adwin.com/index.html
No.01

基本編Vol.1セット [キットで遊ぼう電子回路シリーズ1]

基本編Vol.1セット [キットで遊ぼう電子回路シリーズ1]

キットで遊ぼう電子回路No.1基本編Vol.1テキスト [ECB-102]

キットで遊ぼう電子回路No.1基本編Vol.1テキスト [ECB-102]



No.02
キットで遊ぼう電子回路No.2基本編Vol.2(セット ECB-200T)

キットで遊ぼう電子回路No.2基本編Vol.2(セット ECB-200T)

キットで遊ぼう電子回路No.2基本編Vol.2(テキスト ECB-202)

キットで遊ぼう電子回路No.2基本編Vol.2(テキスト ECB-202)



No.03
キットで遊ぼう電子回路No.3ディジタル回路編Vol.1セット [ECB-300T]

キットで遊ぼう電子回路No.3ディジタル回路編Vol.1セット [ECB-300T]

キットで遊ぼう電子回路No.3ディジタル回路編Vol.1(テキスト ECB-302)

キットで遊ぼう電子回路No.3ディジタル回路編Vol.1(テキスト ECB-302)



No.04
キットで遊ぼう電子回路NO.4ディジタル回路Vol.2セット [ECB-400T]

キットで遊ぼう電子回路NO.4ディジタル回路Vol.2セット [ECB-400T]

キットで遊ぼう電子回路No.4ディジタル回路Vol.2テキスト [ECB-402]

キットで遊ぼう電子回路No.4ディジタル回路Vol.2テキスト [ECB-402]



No.05
キットで遊ぼう電子回路No.5PIC入門アセンブラ編セット [ECB-500T]

キットで遊ぼう電子回路No.5PIC入門アセンブラ編セット [ECB-500T]

キットで遊ぼう電子回路No.5PIC入門アセンブラ編テキスト [ECB-502]

キットで遊ぼう電子回路No.5PIC入門アセンブラ編テキスト [ECB-502]



No.06(下の「新PIC入門C言語編」が新版。内容は基本同じだが新版のボリュームは少ない)
PIC入門C言語編セット [キットで遊ぼう電子回路シリーズ6]

PIC入門C言語編セット [キットで遊ぼう電子回路シリーズ6]

PIC入門C言語編テキスト [キットで遊ぼう電子回路シリーズ6]

PIC入門C言語編テキスト [キットで遊ぼう電子回路シリーズ6]



No.07
キットで遊ぼう電子回路No.7ディジタルマルチメータ編セット [ECB-700T]

キットで遊ぼう電子回路No.7ディジタルマルチメータ編セット [ECB-700T]

キットで遊ぼう電子回路No.7ディジタルマルチメータ編テキスト [ECB-702]

キットで遊ぼう電子回路No.7ディジタルマルチメータ編テキスト [ECB-702]



No.08
キットで遊ぼう電子回路No.8オペアンプ入門編セット [ECB-800T] (手と頭で覚える キットで遊ぼう電子回路シリーズ)

キットで遊ぼう電子回路No.8オペアンプ入門編セット [ECB-800T] (手と頭で覚える キットで遊ぼう電子回路シリーズ)

  • 作者: キットで遊ぼう電子回路研究委員会,長尾洋,答島一成
  • 出版社/メーカー: アドウィン
  • 発売日: 2008/11/01
  • メディア: ムック
  • 購入: 2人 クリック: 27回
  • この商品を含むブログ (1件) を見る


No.09
キットで遊ぼう電子回路No.9新PIC入門C言語編セット (ECB-900T)

キットで遊ぼう電子回路No.9新PIC入門C言語編セット (ECB-900T)

キットで遊ぼう電子回路No.9新PIC入門C言語編テキスト (ECB-902)

キットで遊ぼう電子回路No.9新PIC入門C言語編テキスト (ECB-902)


計17点アマゾンで見つけられる商品全部。


大阪日本橋で電子パーツでもそろえてみようかと、マイマップを作ってみた。
http://maps.google.com/maps/ms?ie=UTF&msa=0&msid=103778367651769418225.000486ac9c6c5a6c27cc2



(2010/05/17)追記
昨日は、色々迷ったあげく

キットで遊ぼう電子回路No.3ディジタル回路編Vol.1セット [ECB-300T]

キットで遊ぼう電子回路No.3ディジタル回路編Vol.1セット [ECB-300T]

をアマゾンで買いました。お金があればシリーズ最初のアナログ回路から始めたかったけど、ここは知りたい所をピンポイントにデジタル回路編のNo.1から始めようと思います。多分今日発送で明日ごろ到着。たのしみ。


今日、大阪市内まで出かけるのですが、久しぶりに電子パーツなどを見に日本橋でんでんタウンまで足をのばしてみようかなぁ。





では、今日は、Ruby本について話を進めていこうと思います。


電圧の高い低いを、1と0とに割り振り表現するのが現代のコンピュータの根本。(P.004)


デジタル回路の入門書を見てわかったのですが、ICなどの入力には5Vの入力を掛けるんですね。そして、掛けた5Vの電圧がそのICから出力として5V出たり、出なかったり(0V)する。


例えば、そのICの先にLED(発光ダイオード)が繋がっていたりすると、点灯したら1、消灯で0、又ブザーが繋がっているならば、音が鳴ったら1、鳴らなかったら0。という風に1と0が意味を持ちはじめる。


電圧が少々不安定で5Vでなく4.8VでもLEDが点灯するようにしておけば、たとえ出力や入力電圧にノイズが混じったりして幅が生まれても「1」という得られる結果は同じ。ここがデジタル回路の重要な所。


この考えを基礎にして、ICをLSI、さらにもっと複雑なプロセッサに1と0を表現させ、LEDの代わりに液晶ディスプレイに文字を表示したり、音楽を鳴らしたりするようになったのがコンピュータという訳なんですね。何となくわかるようになりました。


アナログ回路とデジタル回路はそもそも表現に対する考え方が全く違うという事。デジタル回路もアナログ回路の一種だから、アナログ回路は全ての基礎となる回路で、アナログが現代デジタル表現の全てを支えているわけですね。


コンピュータ内部の0と1の表現について。(P.005)

  • コンピュータ内部では0と1を電圧で表す


(2010/05/18 9:48)
今日、注文していたキットで遊ぼう電子回路シリーズデジタル回路編No.1の本とキットが届く予定。たのしみ。


指を立てた状態(1)と、降ろした状態(0)で1と0を表す。指の本数を増やせばそれだけ多くの数を表現できる。指の本数をn本とすると、「2^n通り」の数字を表現可能。

  • 1と0は、ビット(bit)と呼ばれる。


指を8本使えば「8ビット」(そういえば、英語では8ビットは複数形の8ビッツ(8bits)なのかな?)「8-bit」が正解。ハイフンが要るということか、ふむふむ。


●参照●context based arithmetic coding 「コンテクストに基づく」という形容句を作る場合には context-based のように書きます。 * 8ビットの画像というときには an 8-bit image と書きます。an 8-bits image や an 8 bit image とは書きません。

だそうです。

(コラムP.006)
現在、フラッシュメモリの中には、複数の電圧のしきい値を設けて3進数でデータを記録するものがあるそうだ。2進数より多くの記録が出来るという。「多値化技術」と呼ぶそうだ。確かに3進数、4進数、もっと進んで10進数、16進数でパソコンが数値を扱うようになれば、データの容量や処理速度は何倍にもはねあがりそうです。10進数ならたった2ビットで00から99まで100種類もの数を表現できる。これは電圧制御がいかに正確になるかに掛かっていそう。


●参照●第340回:多値技術 とは

どうやら、最近急激にフラッシュメモリの容量が上がったのはこの技術があっての事みたいだ。


ちなみに、ハードディスクに多値技術は使われていないんだろうか?ググってみるとハードディスクには使われていないようで、そのかわりSSDに使われているらしい。なんでもひとつの素子で「ない」「少しある」「普通にある」「たくさんある」の4値読み取るそうだ。
(東芝のサイト)
http://kagakukan.toshiba.co.jp/manabu/sci_tech/kaitai/ssd_j.pdf

2進数と16進数
  • 10進数…数の表現10種類(0,1,2,3,4,5,6,7,8,9)
  • 2進数…数の表現2種類(0,1)


コンピュータは0か1の表現なので2進数が合っている。


(2010/05/19 11:12)(P.007)
10進数で「123」
123=10^2\times1+10^1\times2+10^0\times3=100+20+3


2進数で「101」
101=2^2\times1+2^1\times0+2^0\times1=4+0+1=5


P.007には(ミスプリ)訂正箇所がここにあります。上の答えの部分が「9」に印刷されていますが、「5」が正解です。


2進数は桁数を多く消費するので、4桁まとめて1個の16進数で表現する事がある。2進数で4桁というと16通り(0000から1111まで)の表現が出来るので16進数を使うのがちょうど良い。(この為に16進数が生まれたのかなぁ…と、少し思った)

※P.008 表(1)-3 10進数・2進数・16進数の比較


「キットで遊ぼう電子回路シリーズNo.3ディジタル回路編Vol.1」に「BCDコード」というのが出ていたけど、あれは、10進数の各桁を2進数に表す(Binary Coded Decimalの略=BCD)だから、これとは違うのかな。一瞬「2冊の本の説明が繋がった」と思った。

(※「キットで遊ぼう電子回路シリーズNo.3ディジタル回路編Vol.1」P.006のBCDコード解説…「0と1の並びで表現された2進数は、ビット数が大きくなると、人が読み取ったり書いたりする時大変困難です。そこで10進数の各桁をそれぞれ4ビットずつ2進数で表現する方法が考えられた」とあるんだけど、10進数をわざわざ2進数にして桁数増やしてなんで読みやすくなるのか?がわからんのだけど。たぶん10進数表現の0〜9を表示可能なBCD対応の数字表示素子1つに対してBCDの4桁を4本の入力信号として直接入力する、等の使われ方をした時に例えば「1234」を「10011010010」でなくて「1234」の各桁ごとに「0001/0010/0011/0100」に割って入力できれば分かり易いって事なんだろうな…と思う事にしてる」


(2010/05/20 10:24)追記
16進数は0〜9までに加えてA〜Fを使い16通りの数を表す。


一桁をビットとという物で表せば、ビット数が多くなるほど世の中のあらゆる(整数)を表しやすくなる。

ビット数 扱える数 何通りある? 求めた式
01ビット 0〜1 2通り 2^1
02ビット 0〜3 4通り 2^2
08ビット 0〜255 256通り 2^8
16ビット 0〜65,535 65,536通り 2^{16}
32ビット 0〜4,294,967,295 4,294,967,296通り 2^{32}
64ビット 0〜18,446,744,073,709,551,615 18,446,744,073,709,551,616通り 2^{64}


ちなみに、18,446,744,073,709,551,616通りを求めるのにWindowsアクセサリの電卓を使った。今のところ桁数なら最強の電卓かも。(Macの関数電卓では、指数表現になるし、エクセルでは勝手に数字を四捨五入して丸めてしまうので)指数表現って今の僕には数の大きさがピンと来ないから困る。


あと、はてなのtex記法、2^{44}とかべき乗の数が二桁になると「2^44」という風に最後の「4」が下がってしまいます。この場合は「44」を中括弧に入れる「[tex:2^{44}]」の様にするとちゃんと「2^{44}」と表示されます。


(2010/05/21 11:05)

負の数の表現

いよいよ「負の数」だ。どのようにマイナス記号を表すのか全く想像つかない。

  1. コンピュータはそもそもマイナス記号をもっていない
  2. 負の数も1と0の組み合わせで表現する必要がある
  3. 2の補数という表現をもちいる(?)


「2の補数」って遠い過去に学校で習った気がするけど…。忘れてしまった。


8ビットの例

  1. 256通りの数が表現できる
  2. このうち半分の「0〜127」「128〜255」に割る
  3. このうち前半「00000000〜01111111」を「正の数」に割り当てる
  4. 後半を「10000000〜11111111」を「負の数」に割り当てる


(2010/05/22 11:03)追記

  1. 後半のどの数字をどうやって「負の数」に割り当てようか?
  2. 前半の「00000000〜01111111」に一つ一つ対応する負の数を作るには?
  3. こうしよう。前半の数と足して「100000000」になる数をその正の数に対応する負の数としよう
  4. つまり「n(正) + m(負) = 100000000」(←2進数)のmが負の数となる


10進数では、「n+m=0」です。例「(3) + (-3) = 0」「(5) + (-5) = 0」
2進数でも、右辺が「0」になるように考えられています。「100000000」は9ビットですが、今考えているのは8ビット。飛び出た「1」は8ビットコンピュータは無視するらしい。つまり「100000000」→「00000000」となる。(正確には8ビット桁からあふれた(桁あふれ)したことを別の場所に記録し、計算結果から切り捨てるそうだ)


かくして、2進数で「足してゼロになる数」が実現できる。そういう仕組み。8ビットだけでなく、16ビット、32ビットでも同じ事が出来る。


「2の補数」の求め方。


00000001(…この数の補数を求める)

11111110(…全ビット反転)

11111111(…1を加算)


試しに「000000001」と「11111111」を足すと


00000001 + 11111111 = 100000000


足して、「100000000」になりました。


(2010/05/23 12:33)追記
10進数を2進数にずっと手書きで変換しているんだけどもうよくわからなくなった。
65を2進数にしたいのだけど…。2^0+2^1+2^2+2^3+2^4・・・になるような各桁が何個有るか数えるのかな?違うのかな?よくわからん。

65=
+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2
+2+2+2+2+2+2+2+2+2+2+2+2+1

(2010/05/25 12:08)追記
2進数について、もう頭の中だけでは理解が付かないとおもったので、紙とクリップを使って実験をしてみました。それを以下のエントリーにまとめた。


●参照●俺的、2進数の理解法。ゼムクリップとコピー用紙でOK! - yonta24の日記


これでよし!もう迷わない。んで、本文にもどります。


ええと、「8ビットの場合は、0〜127と128から255まですなわち、前半00000000〜01111111と後半10000000〜11111111、に分け、前半を正の数、後半を負の数にわける」んだな。。すでに分けるところで頭の中混乱するけど。。。


前半01111111から後半10000000は奇しくも見事に桁が上がっている部分になっている。で、規則も無くぐちゃぐちゃに負の数を決めても仕方がないので、「足して二進(100000000)」に成るように正と負のペアを作ろうというわけか。。


つまり、00000001に対しては11111111がマイナスを担当する値。これは同時に00000001の補数になっている。本当かどうか調べてみよう。

1と-1 00000001+11111111=100000000


はい、ちゃんと足したら100000000になりました。10進数でもマイナス3とプラス3を足すとゼロになる。同様に二進でも00000001と11111111を足すとゼロになる用にセッティングするんだね。おっと00000001と11111111を足すとゼロじゃなくて100000000だ。だけど8ビットで考えるので9ビット桁目にあふれ出た1は無視されるんだって。つまり100000000は、00000000になる。つまり、ゼロになる。というわけ。

2と-2 00000010+11111110=100000000
3と-3 00000011+11111101=100000000
4と-4 00000100+11111100=100000000


赤い所が2の補数に当たるのだけど2の補数は求め方も簡単。(なぜそうなるか?わかんないけど)正の数を全桁反転して1(二進)を加えると2の補数のできあがり。上の「000000112」だったら反転「111111002」+「12」で、「111111012」が2の補数になるというわけ。


ちなみに「000000002」に対応するマイナスの二進数はない。また、-128は「100000002」だがこれに対応する正の数は無い。P11みて不思議に思った。Wikiを見ると書いてあった。


●参照●コンピュータ等で負の整数を扱う場合、一般的に用いられている方法は1番上位のビット(桁)を符号の用に扱い、すべてのビットが 1 のものを -1 とする方法である(2の補数を参照)。-2 は最下位ビットが 0 になる。8 ビットの場合(二進で 8 桁まで扱える場合)、-1 は 11111111、-2 は 11111110 として扱われている。この方法は 11111110 + 1 = 11111111 となり、加減乗の演算において特別な処理が不要であるという特徴を持つ。ただし、最上位ビットで繰り上がり・繰り下がりが生じた場合に 9 ビット目より上を捨てて演算することになる。また 10000000 は -128 とされることが多いが、正式には決まっていない。例えばC言語等では符号付 8 ビットの数は -127 から 127 の数を扱えるとされ、正式には -128 に対応していない。


だそうだ。ああほっとした。てか、本文に書いて置いて欲しいわ。


(2010/05/26 11:12)追記

少数の表現(P.011)

マイナスの次は少数の表現。


10進数
3.56=3\times10^0+5\times10^{-1}+6\times{-2}=3\times1+5\times0.1+6\times0.01=3+0.5+0.06


2進数
1.10=1\times2^0+1\times2^{-1}+0\times2^{-2}=1+1\times0.5+0\times0.25=1+0.5+0=1.5


桁とはクリップの重さなのだから、小数点以下ではだんだんと桁の重さが軽くなる。0.5個まで置ける丸とか、0.25個まで置ける丸とかを考える。(難しいけど)


●参照●俺的、2進数の理解法。ゼムクリップとコピー用紙でOK! - yonta24の日記


ただし!コンピュータには、小数点という点を表現するビットが無い。例えば、「111010102」の何処が整数部分でどこからが少数部分なのか判断しようがない。そこで少数は一旦何倍かして整数に直してから(少数を消してから)計算し、答えが出たらそれを何分の一かして少数に直す。そんな考え方をとる。最初に10^n倍して、最後に10^nで割る。この方法を「固定小数点数」と呼ぶそうだ。


固定小数点数
小数点何桁かを固定して表すやり方。例えば、固定小数点を4桁とした場合は、「3.1415」「1.2000」など小数点が常に固定した位置に在る事から「固定小数点数」と呼ぶ、コンピュータに於いては計算が速い。


浮動小数点数
5.9742\times10^{24}
これは地球の質量をキログラムで表現したもの。これを指数表現と呼ぶ。これを使うと超巨大な数からすごく小さな数まで簡易に表現できる。例えば5.9742\times10^{24}を指数表現を使わない場合は「5974200000000000000000000」となるゼロを数えるのが大変。でも、5.9742\times10^{24}であれば、5.9742と指数の24だけで済みます。この表現では固定小数点数と違って指数の数によって小数点が”浮動”するため「浮動小数点数」と呼ぶ。


(2010/05/28 11:17)追記
昨日はてなダイアリーが軽くなった。以前から応答速度が遅いと定評があったので改善したみたい。管理画面も変わっている。どのように変わったかは追々見ていく事にしたい。


(P.013)浮動小数点数の話。現在一般に使用する浮動小数点数には表現に使用するビット数により単精度(32ビット)と倍精度(64ビット)の2種類がある。

単精度 32ビット 仮数部23 指数部8 符号部1 -3.4\times10^{38}3.4\times10^{38}
倍精度 64ビット 仮数部52 指数部11 符号部1 -1.8\times10^{308}1.8\times10^{308}


(2010/06/02 12:21)追記
iPadがウチにやってきて、使い方も一通りやって落ち着いてきた。Evernoteを使ってこの本「Ruby 1 」をデータベース化又は、電子書籍化しようとしている。うまくいけば自家製のプログラミング辞典ができそう。


(2010/06/03 21:00)追記
2進数のプラスマイナス、小数点ときて、固定小数点数は、小数点があったら小数点を消す為に小数点の桁に応じて何倍かして、整数になってから計算し、その答えを元の桁に戻るように割って求める方法。小数点以下何桁なのかは扱う全部の数字の桁数が同じで固定されていないと計算できない。(例えば10進で120.5x1.256では、10倍したらそれぞれ1205と12.56となり1.256の数字の小数点が残ったままだ。ちゃんと13.54x8.64など小数点の位置が固定されている必要がある、つまりそれが=固定小数点数

P012
指数表現(5.9742x1024は、5974200000000000000000000を表した別の表現)
↓(別名?)
浮動小数点数(指数の数に応じて小数点の位置が”浮動”するからこの名前)


(2010/06/04 13:13)追記
P013
浮動小数点数は、非常に多くの桁数を処理できる。

単精度 32ビット 仮数部23 指数部8 符号部1 -3.4\times10^{38}3.4\times10^{38}
倍精度 64ビット 仮数部52 指数部11 符号部1 -1.8\times10^{308}1.8\times10^{308}

だが、常に誤差を考慮する必要がある。2進数の桁の基数は2だがそのn乗、2^nが表す10進の数は、整数では1単位で増加・減少するので問題ないが、1以下の単位では2^{-1}=0.5,2^{-2}=0.25など、小数点以下で桁が変わると0.5から0.25へとその間がない(無いというか2進の無理数になる・割り切れない数になる)。したがって2進の小数点以下の桁と桁の間の数を計算する時には必ず近似値になってしまう(割り切れない数をどこら辺で切り捨てるのか四捨五入するのかは本書には書いていない)ので、浮動小数点数を使う計算をする場合には常に「誤差を考慮」する必要がある。


(2010/06/05 11:56)追記
P014
3分の1は0.333333…という無限小数で、固定小数点数を使用しても(小数点の場所が固定されないから)誤差無く値を保持できない。


この様な時は、分数のまま数値を保持する。\frac{1}{3}=(1,3)


(2010/06/07 11:34)追記
P013単精度と倍精度のビット数の図(Wikiより)



\frac{1}{2}+\frac{1}{3}=(1,2)+(1,3)=(3,6)+(2,6)=(5,6)=\frac{5}{6}
このように分数のまま計算すれば近似値ではない計算が可能。そして分数は特別な表記を(括弧を使って)する。
(分子、分母)の順。texを使った時と([tex:¥frac{5}{6}])と同じ順番だ。


計算指導―近似値と誤差の取扱い (1957年)

計算指導―近似値と誤差の取扱い (1957年)



●参照●まつもと直伝 プログラミングのオキテ 第15回 浮動小数点数の謎に満ちた世界