情報処理安全確保支援士試験 午前 無料問題 1 / 10 ・ 分野1: 科目A-1 テクノロジ系
8ビットの2の補数で表した整数 11101100 を、右へ2ビット算術シフトした。結果を10進数で表したものはどれか。
- −80
- 59
- 251
- −5
正解と解説を見る
正解: D
正解の理由
11101100 は2の補数で −20 を表す。右への算術シフトは、空いた左のビットに符号ビット(1)を入れて符号を保つので、2ビットのシフトで 11111011 になる。これは2の補数で −5 で、−20 を 2の2乗(4)で割った値と一致する。
違う選択肢
「59」… 59 は 00111011 で、空いた左の2ビットに 0 を入れる論理シフトの結果である。算術シフトは符号ビットを保つので、負の数は負のまま残る。
「−80」… −80 は 10110000 で、左へ2ビット算術シフトした結果である。右へのシフトは2の累乗で割る向き、左へのシフトは掛ける向きになる。
「251」… 251 は、正しいビット列 11111011 を符号なしの2進数として読んだ値である。2の補数では先頭の1は負の数を表すので、−5 と読む。
押さえどころ
算術シフトは符号付きの整数の乗除に、論理シフトはビット列の操作や符号なしの数に使う。右へのシフトで1が押し出されると、割り算の端数が切り捨てられる(負の数では小さいほうへ丸まる)点にも注意する。