N 種類の記号によって数を表す方法
私たちは数を表現するのに 0,1,2,3,4,5,6,7,8,9 の10個の記号を使っています。一般に10進法といいますが、特にこれでなければいけない・・ということはなく、「記号N個で数を表現することにしましょう。」とみんなでルールを決めてしまえば、実は何の不自由もなく、数を表現することができます。10進法が世界に広まったのはフランス革命の革命政府がメートル法とともに10進法を定めて以来と言われていて、それ以前は様々な表現が用いられていました。
なぜ10進法がメジャーになったのか、強いていえば人間の手の指の数が両手で10本あるということ・・。特に10進法が優秀な記法であるというわけではありません。まずその呪縛から意識を解放することが、この先の理解に必要です。
例えば 1/3 という量は、10進法の場合 0.333・・・・となって表現できませんが、3進法では 0.1(3) と、小数点以下1桁で表現できてしまいます。
N進法(N個の記号を使う)の ABC.DE という数は、以下のような意味をもつものとしてして表現されます。これを計算すると10進数での表現が得られます。
コンピュータの世界でおなじみの表現です。コンピュータ、日本語にすると電子計算機ですが、その電子回路の中では、電圧の高低(電流のON/OFF)によって信号が処理されています。したがって数(データ)の表現には、それを1と0に対応させる2進法が利用されます。
2進数同士の加算は、以下のようなイメージになります。
以下、1110 + 101 = 10011(14+5 = 19)の計算です。
1 | 1 | ← 繰り上がり | ||||
1 | 1 | 1 | 0 | 14 + 5 | ||
+) | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 1 | = 19 |
これもコンピュータの世界でおなじみの表現です。2進4桁分でちょうど16進1桁に相当するので、2進数表記の代用としてよく用いられます。
色を表すRGB値にはこの16進数が用いられます。例えば、
#記号は「それが16進数である」・・という意味です。
コンピュータが扱う数値には、2つのカテゴリがあります。小数点の前後の桁数を固定して数値を表す固定小数点と、指数表現を用いることで小数点の位置を変化させて表す浮動小数点の2つです。
一般に桁数の決まった2進表記で、先頭を符号(0:+, 1:ー)、次に整数部、最後に小数部、という構成で、数値を表現します。小数点の位置が決まっているので扱いは簡単になりますが、表現できる数値の範囲が限られます。
例えば、16ビットで小数点の位置を中央(8桁目)と定めた場合、+5.25 という数値は以下のように保持されます。
0 000 0101 0100 000
最初の 0が符号+、続く7桁が整数部5、続く8桁が小数部 0.25(0x10-1 + 1x10-2 + 0x10-3・・) という意味です。
(書きかけです)
これらは、プログラミング言語において数値を扱う際のデータ型で、integer は整数、float は実数を扱うものです。float という言い方は、実数を扱う「浮動小数点」の「浮動」に由来するものです。