オーバーフロー(桁あふれ)とは?おーばーふろー
オーバーフロー(桁あふれ)とは、演算結果がその変数やレジスタ(CPUの中の一時置き場)で表せる範囲を超え、はみ出した上位の桁が捨てられる現象。捨てられた結果、符号付き2進数では正どうしの加算が負になるなど、値が実際とかけ離れたものに化ける。気づかれないまま処理が続くため、深刻な不具合の原因になる。
最終更新:2026-10-09
この語が出る過去問を解く →背景
桁数を固定するのは、演算回路と記憶領域を有限にするための設計上の割り切りである。人間の筆算のように桁を無制限には伸ばせない以上、範囲を超えたときの振る舞いは決めておくしかない。基本情報では、桁落ち・情報落ち・シフト演算と同じ「有限桁ゆえに起きること」のまとまりで問われる。
具体例
8ビットの符号付き整数が表せるのは−128〜127なので、100+50は150にならず−106になる。上位ビットが押し出され、符号ビットが1に変わるためである。16ビットへ広げるか、加算の前に「あといくつまで足せるか」を検査して防ぐ。
試験での引っ掛け
アンダーフローとの取り違えに注意。オーバーフローは絶対値が大きすぎて表せない側、アンダーフローは浮動小数点数(小数を「有効数字×2の何乗」の形で表す方式)で0に近すぎて表せない側を指す。左シフトのしすぎで上位ビットが押し出される場合もオーバーフローに当たる。
関連用語
出た過去問
出典:平成29年度 秋期 基本情報技術者試験 午前 問1(IPA)
数値を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倍になる。シフトと加算の組合せで乗算を置き換える典型パターンである。
出典:令和8年度 公開問題 基本情報技術者試験 科目B 問2(IPA)
次のプログラム中の に入れる正しい答えを、解答群の中から選べ。 関数complementは、引数として渡された8ビット型の値xについて、xに加算すると00000…
正解:x ▽ 11111111
加算して0になる値とは2の補数のことで、求め方は「全ビットを反転して1を加える」です。プログラムは最後に 00000001 を加えているので、空欄では x の全ビット反転を作ればよいことになります。排他的論理和は 1 との演算でビットが反転するので、11111111 との排他的論理和が全ビット反転にあたります。よって x ▽ 11111111 が正解です。
出典・参考
公式シラバスの1 基礎理論 > 1. 離散数学 > (3) 算術演算と精度に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。