- 締切済み
平成19年度 秋 非負の2進数 b1b2・・・bnを3倍したものはどれか。
基本情報処理の勉強を進めているものです。 秋の過去問題(午前)を進めて、分からない問題を考え中なのですが・・・ 【問2】 非負の2進数 b1b2・・・bnを3倍したものはどれか。 ア:b1b2・・・bn0 + b1b2・・・bn イ:b1b2・・・bn00 -1 ウ:b1b2・・・bn000 エ:b1b2・・・bn1 【正解】ア この問題のbn0の、nの後についている[0]の意味は 「一番右側のビットに0を代入しています、という意味でしょうか?」 (1ビット左シフトしています(値を2倍しています)という意味でしょうか?) 【考え】 b1b2・・・bn (nを5ビット目としておく) これによりビット列を仮に次の値としておく → 11001 (1)左シフトさせる 110010 b1b2・・・bn に、bn0の右横に追加で 0を入れる (一番右側に0を入れる) 0を入れたた結果として、b1b2・・・bn は1ビット左シフト行われることになる。 (2)1ビットシフト(2倍)された値に対して、元の値をプラスする(1倍を加算)する。 (3)3倍された値が算出される という考えの元、 この問題の[0]の役割は 1ビット左にシフトする為のものである。 という理解で良いでしょうか? 【問題の意図】 シフト演算
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- okg00
- ベストアンサー率39% (1322/3338)
回答No.1
そうです。 3倍する→2倍したものと元の数を足せば3倍です。
お礼
早速のご回答ありがとうございます。 【別途質問】 ア:b1b2・・・bn0 + b1b2・・・bn 2倍したもの+1倍 = 3倍 イ:b1b2・・・bn00 -1 ⇒ 4倍したものから1を引く × ウ:b1b2・・・bn000 ⇒ 8倍する × エ:b1b2・・・bn1 ⇒ 2倍したものに1を足す × 私の中で、何故元の数を足すと倍数が増えるのか?とういところを完全に理解できていないため、もし宜しければ倍数の考え方について、ご意見、ご確認いただけないでしょうか。 (余り深く考えずに解いていたもので・・・) 【考え】 倍数とは、元ある数(もの)の固まりをの個数を表しているものである。 1倍 ⇒ 元ある数が1つある 2倍 ⇒ 元ある数が2つある 3倍 ⇒ 元ある数が3つある この考えの元 シフト演算の結果 2倍された値(元ある数が2つある状態) から 元ある数を1つ追加することによって、3倍が実現されている、という理解で良いでしょうか。