整数型と実数型の違い


整数は実数に含まれるのに なぜわざわざ「整数型」の変数が存在するのだろうか. 確かに, 理屈の上では実数があればそれでよい. しかし, 存在するからにはわけがある. 実数が完璧な実数ではないのである.

計算機の中で実数型の変数は有限の有効数字で表現される. したがって, 実数型の変数はあくまで実数を「近似」するだけで, 正確に表現することはできない. 普通の実数型で数億円の取引の計算をすると, 10円玉か100円玉がいくつか行方不明になる. これに対して, 整数型の方は実数型より広い範囲で完璧に整数をあらわす.

計算機の中で数値を表現する具体的な形式を内部表現と呼ぶ. 通常, 整数型も実数型も 4 バイト = 32 ビットで表現される. 整数型を表すために, 32ビットのうち, 1ビットを負号として使い, 残り31ビットで絶対値をあらわすのが, もっとも素朴であるが, 一つの0 (ゼロ) の表現方法として, +0 と -0 が存在することになる. ほとんどの計算機では次の「補数表示」が使われる. 実数型の方は, いくつかの形式があるが, UNIX などでは IEEE 形式と呼ばれるものが使われる.

整数の補数表示

0 および正の整数は, 31ビットの2進数の先頭に負号ビット 0 をつけたもので表される.

負の整数は, その整数の絶対値の「補数」に負号ビット1 をつけたもので 表される. 要は, 負号ビットまで含めて 32 ビットの(正の)2進数として考えると, 負の整数 N は N に231 を足したものとして表現される.

この方法では -231 = 2147483648 から 231-1=2147483647 までが表現できる.

この表現を使うと, 加減算において負号部分も含めて 正の数と統一的に扱うことができるようになり, 演算回路の構成が簡単になる.

実数の IEEE 表現

IEEE 形式では 32 ビットを次のように使う.
負号 1 bit
指数部 8 bit
仮数部 23 bit
この表現で表される数値の絶対値が最大のものは 3.40282347 x 1038 で, 絶対値最小のものは1.17549435 x 10 -38 である. また, 有効数字は10進数で7-8桁となる.