2012年10月24日水曜日

=== 平成24年秋 問1 ===


平成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になるので、答えはウ





にほんブログ村 IT技術ブログ IT技術情報へ
にほんブログ村


0 件のコメント:

コメントを投稿