IT用語を超やさしく理解する
固定小数点数
別名: 固定小数点 / fixed-point number / fixed-point representation
先に知っておくと分かりやすいことば(1語)
必要なら先に確認できます。知っていることばは、そのまま読み進めて大丈夫です。
- 符号付き数と補数コンピュータが負の整数を表す方法と、2の補数の作り方・読み方・表現範囲を初心者向けに説明します。
30秒で思い出す
固定小数点数は、bit列のどこに小数点があるかをあらかじめ決めて数を表す方法です。
小数点の位置が固定されているので、同じbit数でも「整数側に何bit使うか」「小数側に何bit使うか」によって、表せる範囲と細かさが変わります。
超やさしく理解
8bitを「整数部4bit・小数部4bit」と決めたとします。
0101.1000
整数部の 0101 は5、小数部の .1000 は 1/2 なので、この値は5.5です。
コンピュータの中に実際の小数点記号が保存されているわけではありません。小数点をどこに置くかという約束によってbit列を読みます。
小数部のbitにはどんな重みがある?
2進数では、小数点の右側は 1/2、1/4、1/8…と半分ずつ小さくなります。
2¹ 2⁰ . 2⁻¹ 2⁻² 2⁻³ 2⁻⁴
2 1 . 1/2 1/4 1/8 1/16
たとえば .1010 なら、
1/2 + 0/4 + 1/8 + 0/16
= 0.625
です。
bit列を固定小数点数として読む
8bitの 01011000 を「小数部4bit」と決めると、
0101 1000
↓
0101.1000
となります。
整数部は5、小数部は1/2なので、値は5.5です。
別の見方をすると、bit列を整数として読んだ値を 2^4 = 16 で割っても同じ結果になります。
01011000₂ = 88
88 ÷ 16 = 5.5
小数部bit数で刻み幅が決まる
小数部がm bitなら、最小の刻み幅は 2^-m です。
小数部4bitなら、
2^-4 = 1/16 = 0.0625
なので、0.0625刻みで値を表せます。
小数部を増やすほど細かい値を表せますが、全体のbit数が同じなら整数部に使えるbitが減るため、大きな値を表せる範囲は狭くなります。
符号付き固定小数点数
負の値を扱う場合は、2の補数で表した整数を一定の倍率で縮小して読む方法があります。
たとえば8bitの2の補数で、小数部を4bitと決めたとします。
11111000
このbit列を8bitの符号付き整数として読むと -8 です。小数部4bitなので16で割ります。
-8 ÷ 16 = -0.5
したがって、この固定小数点数は -0.5 を表します。
表現できる範囲の考え方
8bitを符号付き2の補数、小数部4bitとして使う場合、元の整数範囲は -128〜127 です。
すべて16で割るので、固定小数点数としての範囲は、
-8.0 〜 7.9375
になります。
刻み幅は0.0625です。
このように、bit数と小数点位置を決めると、表現範囲と刻み幅が決まるのが固定小数点数の重要な特徴です。
なぜ固定小数点を使う?
小数点位置が固定されているため、一定のスケールで値を扱う計算を比較的単純に設計できます。
たとえば「最小単位を1/16と決める」のように、必要な範囲と細かさがあらかじめ分かっている数値処理では、bitの使い方を明確に決められます。
一方で、非常に大きな値から非常に小さな値までを同じ形式で表すのは苦手です。広い範囲の値を扱う方法は、次の浮動小数点数で学びます。
よくある勘違い
bit列の中に小数点記号が入っている?
通常は入りません。どこを小数点位置として解釈するかを形式側で決めます。
小数部のbitを増やせば、範囲も広くなる?
全体bit数が同じなら逆です。小数部を増やすと細かさは増しますが、整数側に使えるbitが減るため範囲は狭くなります。
固定小数点ならすべての小数を正確に表せる?
表せるのは決められた刻み幅の値です。表現できない値をどう扱うか、丸めや誤差の詳細は後続Knowledgeで扱います。
このKnowledgeで扱わないこと
ここでは固定された小数点位置、2進小数の重み、刻み幅、基本的な表現範囲を扱います。
浮動小数点の指数・仮数・正規化、丸め誤差、桁落ち、情報落ち、オーバーフローの詳細は後続Knowledgeへ分けます。
ここまで分かればOK
- 固定小数点数は小数点位置をあらかじめ固定する表現だと説明できる
- 小数点右側のbitが 1/2、1/4、1/8…の重みを持つと分かる
- 小数部bit数から刻み幅を求められる
- bit列を決められた小数点位置で読み、値へ変換できる
- 2の補数で表した符号付き整数を固定小数点として読める
- 精度を細かくすると、同じbit数では表現範囲とのトレードオフがあると説明できる
資格との関係
基本情報技術者試験
- シラバス
- Ver.9.2
- 必要な理解
- 問題で応用できる
- 重要度
- 高
- 分野
- テクノロジ
関連するIT用語
理解できたか確認しよう
答えを選んで、なぜそうなるのかまで確認できます。
確認問題 1
小数部4bitの固定小数点数を読む
8bitの値01011000を、小数部4bitの符号なし固定小数点数として扱います。
この値を10進数で表したものはどれですか?
確認問題 2
符号付き固定小数点数を読む
8bitの2の補数で表された11111000を、小数部4bitの固定小数点数として扱います。
この値を10進数で表したものとして最も適切なものはどれですか?