• ベストアンサー

10進数→2、6、18進数への変換

53.8(10進数)を2進数(小数9位まで)、8進数(小数5位まで)、16進数(小数5位まで)求めてください。できれば、自分でも解けるようになりたいので、やり方も教えていただけると嬉しいです。 よろしくお願いします。

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

  • ベストアンサー
  • info222_
  • ベストアンサー率61% (1053/1707)
回答No.3

>53.8(10進数)を2進数(小数9位まで)に変換するには 整数部「53.」と小数部「0.8」に分けてそれぞれを変換します。 整数部 53.=52+1=26*2+1=(13*2+0)*2+1=((6*2+1)*2+0)*2+1 =(((3*2+0)*2+1)*2+0)*2+1 =((((1*2+1)*2+0)*2+1)*2+0)*2+1 =1*2^5+1*2^4+0*2^3+1*2^2+0*2^1+1*2^0 =110101.(2進数) すなわち 2で割った余りを並べたものになります。 2)53 2)26 ... 1(LSB) 2)13 ... 0 2)6 ... 1 2)3 ... 0 2)1 ... 1 ... 1(MSB) MSBからLSBまで並べれば53の2進変換した「110101」が得られます。 小数部 0.8 小数部を2倍して繰り上がる整数部を並べれば小数部の2進変換値がえられる。 0.8*2=1.6=整数部1+小数部0.6 → .1 ...(※1) 0.6*2=1.2=整数部1+小数部0.2 → .11 0.2*2=0.4=整数部0+小数部0.4 → .110 0.4*2=0.8=整数部0+小数部0.8 → .1100 0.8*2=1.6=整数部1+小数部0.6 → .11001 ここからの計算は(※1)からの繰り返しなので 2進の桁のパターン「1100」の繰り返しになる。 0.8=0.110011001100 ... (2進数) 小数第9位までで打ち切ると 0.8=0.110011001(2進数) 整数部をあわせると 53.8=110101.+0.110011001=110101.110011001 (2進数) ...(答) >8進数(小数5位まで) 53.8の2進変換した 110101.110011001 を 小数点を中心に3桁で区切って |110|101|.|110|011|001| 区切った3桁の2進数を8進数に変換してならべると8進変換値 65.631(8進法) ... (答) が得られます。 >16進数(小数5位まで) 53.8の2進変換した 110101.11001100110011001100 を 小数点を中心に4桁で区切って 11|0101|.|1100|1100|1100|1100|1100| 先頭に00を補って |0011|0101|.|1100|1100|1100|1100|1100| 区切った4桁の2進数をそれぞれ16進数に変換してならべると16進変換値 35.CCCCC (16進法) ... (答) が得られます。

noname#226955
質問者

お礼

お礼が遅くなり申し訳ないです。 分かりやすく教えていただき、大変助かりました。 ありがとうございました。

その他の回答 (3)

  • foomufoomu
  • ベストアンサー率36% (1018/2761)
回答No.4

やりかたの原理をはじめから説明します。8進数の例です。 1.まず、次の表を作ります。  8^2=64  8^1=8  8^0=1 (ここは何進数でも必ず1です) これ以下は小数部用です  8^(-1)=1/(8^1)=0.125  8^(-2)=1/(8^2)=0.015625 これを^-5まで作ります。 2.「53.8」に、前記の数がそれぞれ最大何個含まれるか、大きな数から考えていって、次のような計算式を作ります。  53.8=(64*0)+(8*6)+(1*5)+(0.125*6)+(0.015625*3)+・・・ 3.前記の式の*の後の数を順に並べると出来上がりです。  (10進数)53.8=(8進数)65.63・・・

noname#226955
質問者

お礼

お礼が遅くなり申し訳ないです。 分かりやすく教えていただき、大変助かりました。 ありがとうございました。

  • Tann3
  • ベストアンサー率51% (708/1381)
回答No.2

 やり方は、単純に、泥臭くやることしかありません。仕組みを理解すれば簡単です。 (1)2進法:a1、a2、a3、・・・を「0または1」として  10進法の数= 1*a1 + 2*a2 + 4*a3 + 8*a4 + 16*a5 + 32*a6 + 64*a7 ・・・+ 2^(n-1)*an を2進法で表わせば、  an ・・・ a7 a6 a5 a4  a3 a2 a1 ということです。各々の a1、a2、a3、・・・が「0」か「1」かを、地道に計算して求めます。 (2)同様に、16進法:a1、a2、a3、・・・を「0~15(10→A、11→B、12→C、13→D、14→E、15→F と書く)」として   10進法の数= 1*b1 + 16*b2 + 256*b3 + 4096*b4 + ・・・+ 16^(n-1)*bn を16進法で表わせば、  bn ・・・ b4 b3 b2 b1 ということです。各々の b1、b2、b3、・・・が「0~15」のいずれかを、地道に計算して求めます。 (3)小数点以下は、ちょっと面倒になります。  2進法:c1、c2、c3、・・・を「0または1」として  10進法の小数点以下の数= (1/2)*c1 + (1/4)*c2 + (1/8)*c3 + (1/16)*c4 + (1/32)*c5 ・・・+ (1/2)^n*cn を2進法で表わせば、  0. c1 c2 c3 c4  c5 ・・・ cn となります。各々の c1、c2、c3、・・・が「0」か「1」かを、地道に計算して求めます。 (16進数も同じなので省略)

noname#226955
質問者

お礼

お礼が遅くなり申し訳ないです。 分かりやすく教えていただき、大変助かりました。 ありがとうございました。

  • trytobe
  • ベストアンサー率36% (3457/9591)
回答No.1

筆算の 10)53.8 みたいな形で 53.8 は 10で繰り返し割っていくと、商に5,3,8,と出てくるので、5×10+3×1+8×0.1 という合計だというのがわかります。 これと同じように16で繰り返し割っていくと、16進数がもとまります。 16)53.8 にように割ると、3あまり5.8。 5.8を16で割ると、0.3あまり0.58。・・・と商にずっと3,3,3,・・・と出てくるので、10進数での58.3は、16進数では3.33333・・・・なのです。 実は、16=2の4乗ですので、16進数1桁分は、2進数4桁分に分解できて、16進数の3.33333・・・は、16進数1桁の3を二進数4桁で書いた0011に書き換えた、0011.00110011001100110011・・・・ という2進数になるのです。頭の0は省けるので、11.001100110・・・・ と小数点以下9桁までで切るのも一緒に済ませてしまいます。 さらに、実は、8=2の3乗ですので、2進数3桁分は、8進数1桁分にまとめることができて、2進数の11.00110011001100110011・・・は、小数点基準に3桁ずつに区切って、11.001/100/110/011/001/100/11・・・ としてから8進数1桁ずつににまとめると、3.14631・・・と小数点以下5桁までにできます。

noname#226955
質問者

お礼

お礼が遅くなり申し訳ないです。 分かりやすく教えていただき、大変助かりました。 ありがとうございました。

関連するQ&A

専門家に質問してみよう