オーバーフロー(桁あふれ)とは?
オーバーフロー(桁あふれ)とは、演算結果が、その変数やレジスタで表せる範囲を超えてしまう現象。桁が捨てられるため、値が大きく違うものに化ける。符号付き2進数では正どうしを足したのに負になる、といった形で現れ、深刻な不具合の原因になる。
基本情報技術者試験の過去問では3回出題されています(2017年度〜2026年度)。
おーばーふろー
オーバーフロー(桁あふれ)の意味
演算結果が、その変数やレジスタで表せる範囲を超えてしまう現象。桁が捨てられるため、値が大きく違うものに化ける。符号付き2進数では正どうしを足したのに負になる、といった形で現れ、深刻な不具合の原因になる。
オーバーフロー(桁あふれ)の具体例
8ビットの符号付き整数は−128〜127しか表せないので、100+50を計算すると150が表現できず、結果は−106になる。桁数を16ビットに広げるか、演算前に範囲を検査することで防ぐ。
オーバーフロー(桁あふれ)は試験でどう引っ掛けられる?
アンダーフローとの混同に注意。オーバーフローは絶対値が大きすぎる側、アンダーフローは浮動小数点で0に近すぎて表せない側を指す。また左シフトのしすぎも上位ビットが捨てられてオーバーフローになる。
オーバーフロー(桁あふれ)と関連する用語
オーバーフロー(桁あふれ)が出た過去問
数値を2進数で表すレジスタがある。このレジスタに格納されている正の整数xを10倍にする操作はどれか。ここで、桁あふれは起こらないものとする。
正解:xを2ビット左にシフトした値にxを加算し、更に1ビット左にシフトする。
要点:nビット左シフトは2のn乗倍。10倍は(4倍+元)を2倍にする
左シフト1回は2倍に相当するので、nビット左シフトは2のn乗倍を意味する。10倍は 10x = (4x + x) × 2 と分解でき、2ビットシフトで4倍にしてから元のxを足して5倍、さらに1ビットシフトで2倍すれば10倍になる。シフトと加算の組合せで乗算を置き換える典型パターンである。
出典:平成29年度 秋期 基本情報技術者試験 午前 問1(IPA)浮動小数点形式で表現された数値の演算結果における丸め誤差の説明はどれか。
正解:数表現のけた数に限度があるので,最下位けたより小さい部分について四捨五入や切上げ,切捨てを行うことによって生じる誤差である。
要点:丸め誤差は有限桁ゆえの四捨五入等で生じる誤差
丸め誤差は、扱える桁数に限りがあるために、表現しきれない下位の部分を四捨五入・切上げ・切捨てで処理した結果生じる誤差である。浮動小数点数では仮数部の桁数が有限なので必ず起こりうる。桁あふれや情報落ち、桁落ちとは発生の原因が異なるので区別する。
出典:令和7年度 (公開問題) 基本情報技術者試験 kamokuA 問2(IPA)次のプログラム中の に入れる正しい答えを、解答群の中から選べ。 関数complementは、引数として渡された8ビット型の値xについて、xに加算すると00000…
正解:x ▽ 11111111
加算して0になる値とは2の補数のことで、求め方は「全ビットを反転して1を加える」です。プログラムは最後に 00000001 を加えているので、空欄では x の全ビット反転を作ればよいことになります。排他的論理和は 1 との演算でビットが反転するので、11111111 との排他的論理和が全ビット反転にあたります。よって x ▽ 11111111 が正解です。
出典:令和8年度 (公開問題) 基本情報技術者試験 kamokuB 問2(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。