対象試験と出題頻度
固定小数点数は、基本情報技術者・応用情報技術者で出題されるテーマです。
2の補数表現と組み合わせた計算問題が定番で、「nビットで表現できる整数の範囲」や「10進数を2進数の固定小数点形式に変換する」パターンが繰り返し問われています。
詳細をクリックして確認
基本情報技術者
応用情報技術者
★★★☆☆
ランクB(標準)覚えておくと有利
用語の定義
情報処理試験を勉強していると、「固定小数点数と浮動小数点数って何が違うの?」と混乱しがちです。
固定小数点数(Fixed-Point Number)とは、一言で言うと
「小数点の位置をあらかじめ決めておき、その位置を動かさずにビット列で数値を表す方式」
のことです。
イメージとしては、「定規の目盛り」です。
定規は目盛りの間隔が等しく、測れる範囲は決まっています。固定小数点数もこれと同じで、ビット数に応じた一定の範囲の数を等間隔で表現します。
目盛りを超えた大きな数や極端に細かい数は扱えませんが、範囲内であれば正確かつ高速に計算できます。
📊 固定小数点数の基本情報
| 項目 | 内容 |
|---|---|
| 英語名 | Fixed-Point Number |
| 分類 | コンピュータにおける数値表現方式の一つ |
| 負数の表現 | 2の補数表現が標準 |
| 対になる方式 | 浮動小数点数(Floating-Point Number) |
解説
コンピュータは内部でデータを0と1のビット列として扱います。整数だけなら話は単純ですが、小数を含む数を表現する必要が出てくると「小数点をどこに置くか」を決めなければなりません。
固定小数点数は、あらかじめ「何ビット目と何ビット目の間に小数点がある」と固定してしまう方法です。
ビット列そのものには小数点の記号は含まれず、コンピュータとプログラマの間の約束事として位置を決めます。
▶ 8ビット固定小数点数の構造を図で確認する(クリックで展開)
以下は、8ビットで小数点位置を3ビット目と4ビット目の間に置いた場合の例です。IPA試験でも頻出の形式になります。
| ビット7 (符号) |
ビット6 | ビット5 | ビット4 | . | ビット3 | ビット2 | ビット1 | ビット0 |
|---|---|---|---|---|---|---|---|---|
| ± | 23 | 22 | 21 | . | 2-1 | 2-2 | 2-3 | 2-4 |
| 0/1 | 8 | 4 | 2 | . | 0.5 | 0.25 | 0.125 | 0.0625 |
最上位のビット7が符号ビット(0=正、1=負)、ビット4~6が整数部、ビット0~3が小数部です。この配置で10進数5.625を表すと 0101.1010 になります。
2の補数による負数表現
固定小数点数で負の値を扱うとき、IPA試験では2の補数表現が前提になります。2の補数を求める手順は「全ビットを反転して1を加える」の2ステップです。
例:-5.625 を8ビット固定小数点で表す手順
① 5.625 → 0101.1010
② 全ビット反転 → 1010.0101
③ 最下位ビットに1を加算 → 1010.0110
※FE H23秋 午前問2で実際に出題された計算です。
表現できる範囲
nビットの符号付き固定小数点数(2の補数表現、小数点は最下位ビットの右=整数のみ)で表現できる範囲は次の通りです。
−2n−1 ~ 2n−1−1
例:n=8 → −128~127 / n=16 → −32768~32767
正の最大値と負の最小値が非対称になる点がポイントです。負の側が1つ多いのは、0が正の側(0000…0)に含まれるためです。
浮動小数点数との違い
固定小数点数が「小数点位置を固定」するのに対し、浮動小数点数は「符号・指数・仮数」の3要素で数値を表現し、小数点の位置を動的に変えます。
広い範囲の数を扱える反面、演算に丸め誤差が生じる可能性があります。
| 比較項目 | 固定小数点数 | 浮動小数点数 |
|---|---|---|
| 小数点位置 | 固定(事前に決定) | 可変(指数部で調整) |
| 表現できる範囲 | 狭い | 広い |
| 演算速度 | 高速 | 相対的に低速 |
| 誤差 | 範囲内なら誤差なし | 丸め誤差が発生する場合あり |
では、この用語が試験でどのように出題されるか見ていきましょう。
💡 固定小数点数の核心を3行で
・小数点の位置を事前に固定し、ビット列で数値を表現する方式
・負数は2の補数で表し、nビットの表現範囲は −2n−1 ~ 2n−1−1
・浮動小数点数と比べ「範囲は狭いが演算が正確・高速」と整理する
試験ではこう出る!
固定小数点数は、基本情報・応用情報のテクノロジ系序盤(問1~問5付近)で繰り返し出題されています。
出題パターンは大きく3つに分かれます。
📊 過去問での出題実績(クリックして表示)
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| FE H23秋 午前 問2 |
10進数 −5.625 を8ビット固定小数点形式で2進数に変換する問題。 | ・10進→2進の変換と2の補数計算を組み合わせる ・小数点位置は3ビット目と4ビット目の間 |
| FE H18秋 午前 問5 |
16ビットの符号付き固定小数点数の最小値を16進数で表したものを選ぶ問題。 | ・nビットの表現範囲の公式を知っているか ・最小値 −32768 → 8000(16) の導出 |
| FE H18春 午前 問3 |
nビットの2の補数表現で表現できる整数の範囲を選ぶ問題。 | ・−2n−1 ~ 2n−1−1 を即答できるか ・正負非対称であることがひっかけ |
| AP H26秋 午前 問2 |
符号なし固定小数点の最大値とBCDの最大値の比 a/b が nが大きくなると何に近づくか。 | ・固定小数点の最大値 24n とBCDの最大値 10n の比較 ・指数法則の理解が必要 |
📝 IPA試験での出題パターン
パターン1:「10進数→2進数の変換」
10進の小数を2進の固定小数点形式に変換させる問題。負数の場合は2の補数計算もセットで問われる。
パターン2:「nビットの表現範囲を選べ」
−2n−1 ~ 2n−1−1 の公式を覚えているかの一発勝負。紛らわしい選択肢として「−2n−1−1 ~ 2n−1」が登場する。
パターン3:「最大値・最小値の具体的なビット列」
16ビットの最小値を16進数で答えさせる形式。最小値は 8000(16)、最大値は 7FFF(16) を押さえれば得点できる。
試験ではここまででOKです。IEEE 754 の詳細仕様や浮動小数点数の正規化まで深追いする必要はありません。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. 負数を2の補数で表す固定小数点表示法において、nビットで表現できる整数の範囲として正しいものはどれでしょうか?
- A. −2n ~ 2n−1
- B. −2n−1 ~ 2n−1−1
- C. −2n−1−1 ~ 2n−1
正解と解説を見る
正解:B
解説:
2の補数表現では最上位ビットが符号ビットとなり、nビットで −2n−1 ~ 2n−1−1 の範囲を表現します。例えば8ビットなら −128~127、16ビットなら −32768~32767 です。
選択肢Aは符号なし整数の範囲に近い形で、nビット全体を使った −2n という値は2の補数表現では表現できません。選択肢Cは正と負の非対称が逆になっており、2の補数では負の側が1つ多い(0が正の領域に含まれるため)という性質に反しています。
よくある質問(FAQ)
Q. 固定小数点数は実務ではどのような場面で使われていますか?
金融システムの金額計算や組み込みシステムの制御計算で使われています。金額計算では「1円未満の丸め誤差」が許されないため、浮動小数点ではなく固定小数点で処理するのが一般的です。組み込み機器では浮動小数点演算用のハードウェア(FPU)を持たないプロセッサも多く、整数演算で小数を扱える固定小数点が採用されます。
Q. 「符号なし」と「符号付き」で表現範囲はどう変わりますか?
符号なしの場合は全ビットを数値の表現に使うため、nビットで 0 ~ 2n−1 の範囲になります(8ビットなら 0~255)。一方、符号付き(2の補数)では最上位ビットを符号に使うため、表現できる正の最大値は半分になりますが、負の値も扱えます。試験では問題文に「符号なし」「符号付き」のどちらかが必ず明記されているので、読み飛ばさないことが重要です。
Q. 「オーバーフロー」と固定小数点数の関係は?
固定小数点数の演算結果が表現範囲を超えると、オーバーフロー(桁あふれ)が発生します。例えば8ビット符号付きで 127 + 1 を計算すると、結果の 128 は表現範囲外となり、ビット列上は −128 として解釈されてしまいます。試験で直接問われる頻度は低いですが、仕組みとして理解しておくと、演算の問題で計算結果を検証する際に役立ちます。