電子書籍の厳選無料作品が豊富!

(3.3)10を二進法に変換したいのですが、自分の答えは
 =(11.01001)2 になると思うのですが合ってますでしょうか?     
 小数部は
 0.3       1×2^1+1×2^0+0×2^-1+1×2^-2
×  2       +0×2^-3+0×2^-4+1×2^-5=0.28125
 0.6
×  2       打ち切り誤差は 0.3-0.28125=0.01875
 1.2
×  2
 0.4
×  2 
 0.8
×  2
 1.6

A 回答 (4件)

少し、書き方を変えてみると



3.3=33/10(d)=100001/1010(b)

ですから

    11.010011・・・・・・
___________________________________
101) 10000.1
    101
   __________
    110
    101
   __________
     1000
      101
    ___________
       110
       101
      __________
        1
              , ,
循環に入ります。11.01001
以降、1001が続きます。
    • good
    • 0
この回答へのお礼

ありがとうございます。よく分かりました。

お礼日時:2008/01/13 12:39

何桁まで求めるのかはっきりしませんが、



11.01001(2進法) → 2+1+1/4+1/32(10進法)ですので、計算自体はあってますね。
ただし、切り上げた11.0101 のほうが、3.3に近いです。
11.0101(2進法) → 2+1+1/4+1/16=3.3125(10進法)

11.0100110011001...という循環小数になるはずです。
2+1+1/4+1/32+1/64+1/512+...
=3+(9/32)・1/(1-1/16) (無限等比級数の公式から)
=3+(9/32)・(16/15)
=3+3/10
=3.3
    • good
    • 0

だいたい合ってますね。



既にお気づきかもしれませんが、質問者さんの作業を進め、1.6から1を引いて2倍すれば1.2が再登場します。
これにより循環小数になります。

具体的には11.01の後に0011が繰り返し出てきます。つまり
 11.01001100110011・・・
    • good
    • 0

Windowsのアクセサリの関数電卓で計算してよいのでしたら、次の方法が簡単です。


 2進数の小数点以下何桁まで必要かによりますが、たとえば小数点以下8ビットまで求めるたいのなら関数電卓を10進数モードにし、3.3 x 256(=2^8) を計算した後、2進モードにします。
3.3 x 256 = 844.8 (10進)
--> 1101001100 (2進)
 この2進数は256倍の値なので、2進数を1/256(つまり小数点を2進数の下から8ビット目の上に付ける)すれば答えです。
11.01001100 (2進)
もっと精度が必要なら256の代わりに 65536(2^16)にすれば良いと思います。
    • good
    • 0

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