みならいノート

情報Ⅰ 2027年度版

数値の内部表現と誤差

みならいノートで覚える(無料)

このノートの問いがそのまま復習カードになり、忘れかけたころに出題されます。

0. どういうまとまりか

コンピュータは数を決まった桁数の 0 と 1(ビット)で持ちます。桁数が有限なので、
表せる数の範囲には限りがあり、表せない数は近い値で代用するしかありません。これが誤差の出どころです。

表し方 何に使うか 限界
符号なしの整数 0 以上の整数 n ビットで 0 から まで
2 の補数 負の数を含む整数 n ビットで から まで
固定小数点 小数点の位置を決めておく 範囲が狭い
浮動小数点 符号部・指数部・仮数部に分けて持つ 広い範囲を表せるが、仮数部の桁で誤差が出る

分かれ目は次の 3 つ。

1. ビット数と表せる範囲

根拠: 学習指導要領 情報Ⅰ-(3)-ア-(ア)

1 ビットは 0 か 1 の 2 通りです。ビットを 1 つ増やすごとに、表せる組み合わせは 2 倍になります。

8 ビットの符号なし整数で表せる範囲は?

0 から 255 まで

256 通りのうち 1 つを 0 に使うので、最大は 255。

ある数が n ビットで表せる範囲を超えてしまい、正しく表せなくなることを何というか?

桁あふれ(オーバーフロー)

8 ビットの符号なし整数で 255 に 1 を足すと、9 ビット目が入らず 0 に戻ってしまう。

2. 2 の補数

根拠: 学習指導要領 情報Ⅰ-(3)-ア-(ア)

負の数を表すには、2 の補数を使う方法が広く使われています。
2 の補数を使うと、引き算を「負の数を足す」足し算として計算でき、加算の回路だけで済みます。

10 進数 8 ビットの 2 の補数
127 01111111
1 00000001
0 00000000
−1 11111111
−128 10000000

ある 2 進数の 2 の補数は、どうやって求めるか?

全ビットの 0 と 1 を反転し、1 を足す

8 ビットの 00000011(3)なら、反転すると 11111100、1 を足すと 11111101。これが −3 を表す。

2 の補数で負の数を表すとき、正か負かはどこで見分けるか?

最上位ビット(いちばん左のビット)。0 なら 0 以上、1 なら負の数

8 ビットの 2 の補数で表せる範囲は?

−128 から 127 まで

256 通りを負の数と 0 以上の数で半分ずつ分ける。n ビットなら から 。

コンピュータが負の数に 2 の補数を使う利点は何か?

引き算を、負の数の足し算として加算回路だけで計算できる

符号を別に扱う回路がいらない。

3. 固定小数点と浮動小数点

根拠: 学習指導要領 情報Ⅰ-(3)-ア-(ア)

小数を表すには、小数点の位置を決め打ちにする固定小数点と、10 進数の「」のように
数を「符号・指数・仮数」に分けて持つ浮動小数点があります。

浮動小数点で数を表すとき、どんな 3 つの部分に分けて持つか?

符号部・指数部・仮数部

符号部は正か負か、指数部は桁の位置(2 の何乗か)、仮数部は有効数字の並びを表す。

固定小数点と比べた浮動小数点の利点は何か?

同じビット数で、とても大きい数からとても小さい数まで広い範囲を表せる

その代わり、仮数部の桁数を超える細かさは表せず、誤差が出る。

4. 誤差

根拠: 学習指導要領 情報Ⅰ-(3)-ア-(ア)

ビット数が決まっている以上、計算の結果がいつも正確とは限りません。コンピュータで起こる誤差には、次のような種類があります。

誤差 どこで起こるか
丸め誤差 表せる桁より下を、切り捨て・切り上げ・四捨五入したとき
桁あふれ(オーバーフロー) 結果が表せる範囲を超えたとき
情報落ち 絶対値の大きく違う数を足したり引いたりしたとき
桁落ち 値のほぼ等しい数どうしを引いたとき

10 進数の 0.1 を 2 進数で表すと、どうなるか?

0.000110011… と 0011 が限りなく続き、有限のビットでは正確に表せない

途中で打ち切るので、コンピュータの 0.1 はわずかにずれた値になっている。

表せる桁数より下を切り捨て・切り上げ・四捨五入したことで生じる誤差を何というか?

丸め誤差

0.1 を 10 回足しても、ぴったり 1 にならないことがあるのはこのため。

絶対値のとても大きい数に、とても小さい数を足したとき、小さいほうの数が結果に反映されなくなる誤差を何というか?

情報落ち

仮数部の桁数に収まらない小さな値が、桁合わせのときに消えてしまう。

値がほぼ等しい 2 つの数を引き算したとき、有効数字の桁数が大きく減ってしまう誤差を何というか?

桁落ち

上の桁が打ち消し合い、信頼できる桁がわずかしか残らない。

練習問題

問 1 10 進数の −5 を、8 ビットの 2 の補数で表せ。

11111011

5 は 8 ビットで 00000101。全ビットを反転すると 11111010。これに 1 を足すと 11111011。

問 2 8 ビットの 2 の補数で表された 11111010 は、10 進数でいくつか。

−6

最上位ビットが 1 なので負の数。もう一度 2 の補数をとって絶対値を出す。
反転すると 00000101、1 を足すと 00000110 で、これは 10 進数の 6。したがって元の数は −6。

問 3 8 ビットの 2 の補数で、00000111(7)と 11111101(−3)を足した結果を 8 ビットで答えよ。

00000100(4)

2 つを筆算で足すと 9 桁目に 1 があふれるが、8 ビットに収まらない桁は捨てる。残った 8 ビットは 00000100 で、10 進数の 4。
7 から 3 を引く計算が、足し算だけでできている。

このノートの 12 問を、暗記カードで復習できます

みならいノートで覚える(無料)

答えを隠して出題し、忘れそうなころにもう一度出します。

前 OSとソフトウェア
アルゴリズムの表し方 次

このノートは無償で公開しています。当方は内容の正確性・完全性・最新性を保証しません。学習にあたっては、法令の原文・公式の出題範囲その他の一次資料を必ずご確認ください。試験への合格その他の効果を保証するものでもありません。

本文の転載・再配布はお断りしています(利用規約)。手元に置いて使いたい方は、ストアから Markdown ファイルとして入手できます。