平成24年秋目次 次の問題
問1
8ビットの2進数11010000を右の2ビット算術シフトしたものを、00010100から減じた値はどれか。ここで、負の数は2の補数表現によるものとする。ア 00001000 イ 00011111 ウ 00100000 エ 11100000
解説
算術シフトの場合、右にシフトする時、最上位ビットで埋める。つまり、10001000を右に2ビット算術シフトすると、11100010 となる。
実際に計算すると
11010000を2ビット算術シフトすると 11110100
この値は最上位ビットが1なので、負の数
これを引くということは符号を逆転して足し算しても同じ。
符号を逆転するということは2の補数をとるということなので
00010100-11110100
=00010100+(-11110100)
=00010100+00001100
=00100000
よって、答えはウ
また、10進数に変換してから計算してもよい。 11010000は最上位ビットが1なので、負の値であることがわかる。
とりあえず正の値に直して(2の補数をとる)みると00110000。
これは10進数の48なので、元の11010000は-48であることがわかる。
これを2ビット右にシフトするということは、2で2回割るということなので、-12となる
00010100は10進数の20であるので、
20-(-12)=32 これは2進数で表現すると、00100000になるので、答えはウ
答
ウにほんブログ村