第2種情報処理技術者試験 | 1998年度 = 平成10年度・春期 | 午前 | 問11 |
解答 |
解説 |
算術シフトでは、最上位の符号用ビットが拡張されます。下図に示すように、3ビット右に算術シフトすると、全体が3ビット右にずれるとともに、上位ビットに符号ビット(この場合は1)が埋められます。┌─┬─┬─┬─┬─┬─┬─┬─┐ │0│1│1│0│0│1│0│0│ 100 └─┴─┴─┴─┴─┴─┴─┴─┘ ↓ 全ビットを反転 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │1│0│0│1│1│0│1│1│ └─┴─┴─┴─┴─┴─┴─┴─┘ ↓ 1を加える ┌─┬─┬─┬─┬─┬─┬─┬─┐ │1│0│0│1│1│1│0│0│ -100 └─┴─┴─┴─┴─┴─┴─┴─┘
3ビットシフトした値11110011を直接10進数に変換するのは大変ですから、2の補数を求めることによって、正の値の表現を求めましょう。┌─┬─┬─┬─┬─┬─┬─┬─┐ │1│0│0│1│1│1│0│0│ └─┴─┴─┴─┴─┴─┴─┴─┘ ↓ 3ビット右に算術シフト ┌─┬─┬─┬─┬─┬─┬─┬─┐ │1│1│1│1│0│0│1│1│ └─┴─┴─┴─┴─┴─┴─┴─┘
得られた00001101は13ですから、変換前の11110011は-13であることが分かります。┌─┬─┬─┬─┬─┬─┬─┬─┐ │1│1│1│1│0│0│1│1│ -? └─┴─┴─┴─┴─┴─┴─┴─┘ ↓ 全ビットを反転 ┌─┬─┬─┬─┬─┬─┬─┬─┐ │0│0│0│0│1│1│0│0│ └─┴─┴─┴─┴─┴─┴─┴─┘ ↓ 1を加える ┌─┬─┬─┬─┬─┬─┬─┬─┐ │0│0│0│0│1│1│0│1│ 13 └─┴─┴─┴─┴─┴─┴─┴─┘