2の補数とは?にのほすう
2の補数とは、2進数で負の数を表す方式。全ビットを反転して(1の補数)1を加えると、符号を反転した表現になる。この表し方なら減算を「負数の加算」として処理できるため、CPUは加算回路だけで足し算と引き算の両方をまかなえる。最上位ビットが1なら負の数を表し、0との比較や大小判定も加算回路の結果だけで判定できる。
最終更新:2026-10-09
この語が出る過去問を解く →背景
引き算専用の回路を別に持つと、回路の規模も検証の手間も増える。また符号と絶対値を別々に持つ方式では0が+0と−0の2通りできてしまい、比較のたびに例外の処理が要る。この2つを同時に解いたのが2の補数で、現在のCPUがほぼ例外なく採用している理由でもある。
具体例
4ビットで0011(10進の3)の各ビットを反転すると1100、これに1を足した1101が−3の表現になる。7−3は0111+1101=10100となり、あふれた5桁目を捨てた0100=4が答え。8ビットなら表せる範囲は−128〜127で、負側が1つ多い非対称になる。
試験での引っ掛け
1の補数(反転するだけ)と2の補数(反転して1を加える)の取り違えが定番。また最上位ビットは符号を示すが、単なる符号のしるしではなく桁としての重みも負の値として持っている。0の表現が1通りしかない点も、1の補数との違いとして問われる。
関連用語
出た過去問
問題文で直接問われたものと、解説の中で触れられたものが含まれます。
出典:平成30年度 春期 基本情報技術者試験 午前 問1(IPA)
ある整数値を、負数を2の補数で表現する2進表記法で表すと最下位2ビットは“11”であった。10進表記法の下で、その整数値を4で割ったときの余りに関する記述として…
正解:その整数値が正ならば3
要点:下位2ビットは4で割った余りを表す。負数は商の丸め方で余りが変わる
2進表記の下位2ビットは、その値を4で割った剰余(0〜3)を表す。下位2ビットが11なら、値は数学的に4の倍数より3大きい数、つまり正の数なら4で割った余りは3になる。一方、負数を2の補数で表すと、例えば-1は全ビットが1で下位2ビットも11になるが、商を絶対値で切り捨てる規則では-1÷4の商は0、余りは-1となる。負数の場合の余りは一定の値には定まらず、正の数のときだけ余りが3と断言できる。
出典:令和4年度 公開問題 基本情報技術者試験 科目A 問1(IPA)
出典:令和8年度 公開問題 基本情報技術者試験 科目B 問2(IPA)解説で登場
次のプログラム中の に入れる正しい答えを、解答群の中から選べ。 関数complementは、引数として渡された8ビット型の値xについて、xに加算すると00000…
正解:x ▽ 11111111
要点:2の補数は全ビット反転+1、反転は1とのXOR
加算して0になる値とは2の補数のことで、求め方は「全ビットを反転して1を加える」です。プログラムは最後に 00000001 を加えているので、空欄では x の全ビット反転を作ればよいことになります。排他的論理和は 1 との演算でビットが反転するので、11111111 との排他的論理和が全ビット反転にあたります。よって x ▽ 11111111 が正解です。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。