メインコンテンツへ
基礎理論

8ビットの2の補数表現において、2進数 11001010 が表す10進数の値はどれか。

ア.-74
イ.-54正解
ウ.-53
エ.202

解説

2の補数は『コンピュータが引き算を足し算で済ませるための変換ルール』です。最上位ビットが1のときは負の数のサインで、全ビット反転してから1を足すと絶対値が求まります。

なぜ イ が正解か

最上位ビットが 1 なので負の数と判断します。①全ビットを反転:11001010 → 00110101(= 32+16+4+1 = 53)、②1を加算:53+1 = 54、③符号をマイナスにして -54 が答えです。

なぜ ア は間違いか

最上位の 1 を『符号ビットだから外す』と考え、残りの 1001010(= 64+8+2 = 74)をそのまま読んで -74 とする誤りです。符号・絶対値表現(サインマグニチュード)ならこの読み方で合いますが、2の補数では全ビットをまとめて反転+1するのがルールです。

なぜ ウ は間違いか

ビット反転まで正しく行い 00110101(= 53)を求めたところで +1 を忘れた結果です。2の補数の定義は『全ビット反転+1』であり、この +1 は「ビット反転だけでは 00000000 が二重定義になってしまう」問題を解消する大事な一手間なので省略できません。

なぜ エ は間違いか

11001010 を符号なし8ビット整数として素直に読むと 128+64+8+2 = 202 になります。uint8 型(符号なし)ならこれが正解ですが、問題の前提が2の補数表現(signed)であることを見落とした解釈です。

出典: AI生成問題(学習用)