プレフィックスを除去して桁数を揃えたい場合(8ビット幅)
今注目を集めている プレフィックスを除去して桁数を揃えたい場合(8ビット幅)について、詳しいまとめを整理して公開しています。
国家試験である基本情報技術者試験の基数変換問題において、合格者をふるい落とす定番の難所が2の補数と負の数の表現です。コンピュータ内部のCPU(中央演算処理装置)には加算器(足し算を行う回路)しか搭載されておらず、引き算を「負の数の足し算」に置き換えて処理するために補数という概念が用いられます。
コンピュータで負の数を表す際の標準ルール「2の補数」は、次の2ステップで生成されます。
- 対象の数値を二進数で表し、すべてのビットを反転する(0を1に、1を0にする:1の補数)
- 反転した結果に「1」を加算する(2の補数の完成)
例えば、8ビット環境で十進数の「-25」を表現する場合を考えます。まず正の数「25」を8ビットの二進数にすると「00011001」です。
- 全ビットを反転:`11100110`
- 最下位に1を足す:`11100111`
この「11100111」が、8ビットにおける「-25」の内部表現となります。最上位ビット(左端)が「1」になっているのは負の数であることを示す符号ビット(MSB)の役割を果たしています。
大手IT資格予備校のベテラン講師は次のように解説します。「受験者が最も失点しやすいのは、『符号付き数値』と明記されている問題で、ビット反転後の+1を忘れるケースや、固定ビット長(8ビットや16ビット)を考慮せずに桁溢れさせてしまうパターンです。ビット幅が明記されたら、まず先頭をゼロ埋めして桁を揃えてから反転させる習慣を徹底してください」。