こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

2進数「001100」を3/4倍するには?

某参考書で、タイトルの問題が出題され、その答えは以下のように書かれていました。

==========================================================
3/4は、「1/2+1/4」に分解することができ、以下の表のように表せる。
元の数:0・0・1・1・0・0
1/2:0・0・0・1・1・0
1/4:0・0・0・0・1・1
1/2+1/4:0・0・1・0・0・1
==========================================================

以上が答えに載っていたことです。
最終的に2進数「001100」を3/4倍にするには?という答えは
「001100」に上で求められた「001001」を掛けて終わりだと思います。

ここで私が分からないのは、なぜ1/2が「000110」、1/4が「000011」となるのか、です。
1/2、1/4をそれぞれ2進数にすると「0.1」、「0.01」になると思うのですが・・・。

あと、「001100」を3/4倍した答えが載っていなかったので、
よろしければそちらも併せて教えて頂けると助かります。
よろしくお願いします。

投稿日時 - 2014-10-17 15:59:00

QNo.8793706

すぐに回答ほしいです

質問者が選んだベストアンサー

>「001100」に上で求められた「001001」を掛けて終わりだと思います。
違います。これなら単純に9をかけているだけです。

>1/2が「000110」
元の数を2倍するには「左へ1ビットシフト」同様に4倍するには「左へ2ビットシフト」
逆に1/2倍するには「右へ1ビットシフト」同様に1/4倍するには「右へ2ビットシフト」
ですから元の数をそれぞれシフトしたものと足しています。

まあでもこの辺りの計算なら「10進数に戻してから3/4を求め、その結果を2進数にする」のが間違いがない方法だと思います。

元の数は「10進数で12」なので「3/4倍すると9」なので「001001」が答えです。

投稿日時 - 2014-10-17 16:40:26

お礼

回答ありがとうございます。
なるほど、よく分かりました。
別解まで教えて頂いたおかげで、
より分かりやすかったです。

投稿日時 - 2014-10-17 19:05:07

このQ&Aは役に立ちましたか?

11人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

> ここで私が分からないのは、なぜ1/2が「000110」、1/4が「000011」となるのか、です。
> 1/2、1/4をそれぞれ2進数にすると「0.1」、「0.01」になると思うのですが・・・。

いえ。
元の数「001100」の1/2が「000110」、元の数「001100」の1/4が「000011」って話だと思います。
それらを足し算すると、元の数の3/4nなるって話。

シフト計算と足し算以外に、2進数での掛け算をする必要が無いって話では。


> あと、「001100」を3/4倍した答えが載っていなかったので、

10進数で計算するなら、2進数の「001100」は10進数で12。
12の3/4倍は9。
10進数の9を2進数で表すと「001001」です。

投稿日時 - 2014-10-17 18:17:35

お礼

回答ありがとうございます。
表の理解まで間違えてたみたいです(^^;
分かりやすい説明で助かりました。

投稿日時 - 2014-10-17 19:06:56

001100 => 12(10進数)・・・元の数値
000110 => 6(10進数、12x1/2)・・・1/2の数値
といたかんじですかね

投稿日時 - 2014-10-17 16:41:46

お礼

回答ありがとうございます。
表の理解まで間違えてました(^^;

投稿日時 - 2014-10-17 19:06:03

あなたにオススメの質問