• 締切済み

十進法から二進法への変換

(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

みんなの回答

  • age_momo
  • ベストアンサー率52% (327/622)
回答No.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が続きます。

miketyoro
質問者

お礼

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

noname#47894
noname#47894
回答No.3

何桁まで求めるのかはっきりしませんが、 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

  • banakona
  • ベストアンサー率45% (222/489)
回答No.2

だいたい合ってますね。 既にお気づきかもしれませんが、質問者さんの作業を進め、1.6から1を引いて2倍すれば1.2が再登場します。 これにより循環小数になります。 具体的には11.01の後に0011が繰り返し出てきます。つまり  11.01001100110011・・・

  • kfc_t
  • ベストアンサー率13% (2/15)
回答No.1

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)にすれば良いと思います。

関連するQ&A