アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

==========================================================
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倍した答えが載っていなかったので、
よろしければそちらも併せて教えて頂けると助かります。
よろしくお願いします。

A 回答 (3件)

>「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」が答えです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/10/17 19:05

> ここで私が分からないのは、なぜ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」です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/10/17 19:06

001100 => 12(10進数)・・・元の数値


000110 => 6(10進数、12x1/2)・・・1/2の数値
といたかんじですかね
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/10/17 19:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!