• 締切済み

n進小数?

先日、学校で2進数について習ったのですが、宿題でn進小数を2、8、16進数に変換する問題がでてぜんぜん解けなくて困ってます。どなたか、教えてください。  (98.75)10を2、8、16進数に    (1A.C)16を2、8、16進数に  (12.14)8を2,8,16進数に の3問でお願いします。(xxx)8は、8進数でxxxと表現しました。

みんなの回答

  • starflora
  • ベストアンサー率61% (647/1050)
回答No.2

    n進数というのは、或る桁に数字があると、それが、何桁目かによって、nの何乗という数字をその桁の係数にかけて合計を出すと、とりあえず、10進数に換算できます。そこで、10進数で表現されている数字を、今度はm進数に変えようとすると、mで順番に割って行き、余りで、最初の桁から順番にその桁の係数を計算して出します。具体的に次のように計算します。     例えば、98.75 /10/ なら、2で割ると、98は49になり余りがありません。これは最初の桁が、0ということです。最初の桁とは、一桁目です。次に49を2でまた割ると、24……1 となります、つまり、二番目の桁、第二の桁は1です。24をまた2で割ると、割り切れます。ということで:     98/2=49……0   49/2=24……1   24/2=12……0   12/2= 6……0    6/2= 3……0    3/2= 1……1    1/2= 0……1     ということで、1より大きい部分は、1100010 になります。これは、   1*2^6+1*2^5+0*2^4+0*2^3+0*2^2+1*2^1+0*2^0=64+32+0+0+0+2+0=98   ということで、この計算でよいことが分かります。(注:0100011 でないのに注意)。     少数の方も同じで、違うのは、1/2が幾つあるか、1/4が幾つあるかという計算になり、これは、1/2で割ることなので、丁度、その逆数の2を掛けて行くことになります。     0.75X2=1.5……1と0.5   0.5 X2=1……1と0 です。   つまり、1*(1/2)^1+1*(1/2)^2=1/2+1/4=0.5+0.25=0.75   だから、2進数で、小数点の部分は、0.11 になります。     上の結果と合わせると(98.75)10=(1100010.11)2 が答えです。     8進数、16進数も同じように計算してもよいのですが、ここは頭を使います。   2^3=8,2^4=16 というのを利用します。((1/2)3=1/8,(1/2)4=1/16 も使います)。   (98.75)10=(1100010.11)2=1*2^6+1*2^5+0*2^4+0*2^3+0*2^2+1*2^1+0*2^0+1*(1/2)^1+1*(1/2)^2   でしたから、   2^6=(2^3)*(2^3)=8^2*1   2^5=(2^3)*(2^2)=8^1*4   2^1=8^0*2   で、少数でない部分は、142となります。     また少数部分は、(1/2)3=1/8 ですから、   1*(1/2)^1+1*(1/2)^2=4*(1/8)^1+2*(1/8)^1=(0.6)8 となり、合計すると、   (98.75)10=(142.6)8 が答えです。     16進数換算は、2^4=16,(1/2)^4=1/16 を使って同じように計算します。     (98.75)10=(1100010.11)2=1*2^6+1*2^5+0*2^4+0*2^3+0*2^2+1*2^1+0*2^0+1*(1/2)^1+1*(1/2)^2   =4*2^4+2*2^4+2*2^0+8*(1/2)^4+4*(1/2)^4=(62./12/)8=(62.C)8……Cは12です。   (98.75)10=(62.C)8 が答えです。     ここで、2進数を8進数にする場合は、三桁づつ分ければよく、16進数の場合は、四桁づつに分ければよいという技術が出てくるのです。どうしてそうなるかは、以上の計算方法を考えると、分かると思います。(よく考えてください)。     この三桁づつ分ける、四桁づつ分けるというのを使うとどうなるかは、     (98.75)10=(1100010.11)2=(1|100|010.110|)2=(142.6)8   (98.75)10=(1100010.11)2=(110|0010.1100|)2=(62./12/)8=(62.C)8     となって、簡単に計算できます。三桁づつ、四桁づつ切った中で、2進数の合計を計算して、これを、その桁の数字にすればよいのです。まず、2進数にすると、8進数と16進数は、こんな風に簡単に計算できます。       >(1A.C)16を2、8、16進数に     (1A.C)16=1*16^2+10*16^0+12*(1/16)^1   =(|0001|1010.1100|)2=(11010.11)2   いきなり答えがでますが、これは何をしたかというと、16進数→2進数の上で述べた、桁を四つごとに分けることの逆をしたのです。2進数から16進数へと進んで見ると、そういう計算をしているのが分かるでしょう。   (1A.C)16=(11010.11)2=(11|010.110|)2=(32.6)8     最後は、多分、10進数への変換でしょう。   それは簡単にできます。   (11010.11)2=16+8+0*4+2+0*1+(1/2)+(1/2)^2=(26.75)10       >(12.14)8を2,8,16進数に     (12.14)8=1*8^1+2*8^0+1*(1/8)+4*(1/8)^2   8=2^3 で (1/8)=(1/2)3 であるので   (12.14)8=1*2^3+2*2^0+1*(1/2)^3+4(1/2)^6     ここで、2*2^0=1*2^1  4(1/2)^6=1*(1/2)^4  従って   (12.14)8=1*2^3+2*2^0+1*(1/2)^3+4(1/2)^6=1*2^3+1*2^1+1*(1/2)^3+1*(1/2)^4   =(1010.0011)2     (1010.0011)2=(|1010.0011|)2=(/12/.3)16=(C.3)16     10進数への換算は、2進数が出ているのでそれを元に計算できるし、16進数でC.3ということは、1*16+3*(1/16) であり、これを計算すると、(16.1875)10     なお、途中で計算間違いをしているかも知れません。   検算してください。  

noname#30727
noname#30727
回答No.1

少数部分は、分数で考えて、分母が(10^x)n になるようにします。 (0.75)10 = (75/100)10 = (3/4)10 = (11/100)2 = (0.11)2 = (3/4)8 = (6/10)8 = (0.6)8 = (3/4)16 = (C/10)16 = (0.C)16 (1A.C)16 は、サービス問題ですね。 (12.14)8 は、やや複雑ですが、基本的な事がわかってしまえば簡単です。 (0.14)8 = (14/100)8 = (12/64)10 = (3/16)10 = (1875/10000)10 = (0.1875)10 あとは頑張ってください。

関連するQ&A

  • 基数変換 (小数)

    8進数の27.8と16進数の3C.Bを加算した結果を、16進数で表したものはどれか。という問題をやっていたのですが、小数の場合の8、16進数の変換の仕方が分かりません。サイトで調べたのですが分かりやすい説明の仕方をしたサイトがありませんでした。なので、良ければ詳しく教えていただけないでしょうか?(2進数から10進数への小数変換は分かります。例10.10 = 2.5) 分からない事〔8進数から2進数へ変換 例27.8→?〕 〔16進数から2進数へ変換 例3C.B→?〕

  • 16進小数0.Cを10進数小数に変換したら0.75になりますがわたし自

    16進小数0.Cを10進数小数に変換したら0.75になりますがわたし自身良く解りません 詳しくおしえていただけませんでしょうかm(._.)m

  • 小数と2進法

    何進法の表記かわからないので、質問します。 問題は、 0<α<1となる数αに対し、2^(n-1)αの小数部分は、(*){nが奇数のときは、1/2以上、nが偶数のときは、1/2未満}を満たすという。(ただし、n=1,2,3・・・)二進法の考えを用いて、αの値を求めよ。 解答は、 与えられた条件(*)は、αを二進小数で表したときの小数第n位が{nが奇数のときは、1、nが偶数のときは、0}であることをを意味する。したがってαの二進小数表示は、α=0.101010・・・(1)という循環小数である。周期が2桁であるので、αを2^2=4倍し4αは、二進法で 10.101010・・・(2)と表されることから、(2)-(1)であるαの3倍は、二進法で10と表される。すなわち十進法の2である。ゆえに 3α=2 より α=2/3 この問題でα=0.a_1a_2a_3a_4・・・a_n・・・と表される小数は、10進法に限られるのか?三進法や八進法でよいのか?が疑問です。αは十進法であらわされるとは問題に書かれていないので、迷いました。 10進法の小数に2をかけると、その整数部分が二進法の小数第一位になるということなので、αは十進法の小数かと思いましたが、はっきりしません。どなたかαは十進法の表記なのか、その他の底の表記でもよいのか教えてくださいお願いします。

  • 小5算数 小数×小数=整数になる組み合わせ 教えて下さい

    子供の宿題がわかりません、答えと考え方を教えてください。 ランダムに計算してみましたが端数がでるものばかりでした。 よろしくお願いします。 {問題}2,3,5,6,7,8 の6つの数を一回ずつ使い、小数     ×小数=整数になる組み合わせを8パターン考えましょう。     注)3.5×6.8や7.2×6.5などの小数第一位同士       がある組み合わせ

  • 浮動小数点変換

    (1)次の数値をIEEE754単精度形式で正規化された浮動小数点に変換し、結果を8桁の16進数で表記しなさい。 (a)0.5 0.5を二進数で表すと0.1 0.1*2^0であるから 0 00000000 10000000000000000000000 (b)1.0 1.0を二進数で表すと1.0 0.1*2^1であるから 0 10000000 10000000000000000000000 (c)1.25 1.25を二進数で表すと1.010 0.101*2^1であるから 0 10000000 10100000000000000000000 浮動小数点への変換、あってますでしょうか? また結果を8桁の16進数で表記とありますが 0.5だったら16進数で表すと0.9?これを8桁*16^なんとか乗で表すということでしょうか?

  • 小数の割り算と概数に関しての質問です。

    小数の割り算と概数に関しての質問です。 実際に割り算する前の数字のまるめ方がよくわかりません。 たとえば算数、数学の問題で、世界の人口に対する日本の人口の割合を百分率で求めるときに、上から2ケタの概数で求める場合には、9ケタ÷10ケタを計算する前に割る数と割られる数を四捨五入して、上から2ケタの概数にしてから計算しますよね。 しかし、小数第一位を四捨五入して整数で答えなさいと出題された場合にはそのまま割り算をする必要があるのでしょうか。 あるいは上から何ケタ目かを四捨五入してから計算すべきなのでしょうか。 上記の問題を言い換えてみます。 m桁の自然数Aとn桁の自然数Bがある。 A÷Bの小数第三位を四捨五入してできた数をCとする。 Aの上からp桁目を四捨五入した数をA’、Bの上からp桁目をB’とする。 A’÷B’の小数第三位を四捨五入してできた数をC’とする。 CとC’が等しいとき、pの最小値を調べよ、またはm、nを用いて表せ。 CとC’が完全に等しい必要は本当はないのかもしれません。 慣用としてこのような計算をする場合には誤差が入ってもよいとされているのかもしれません。 答えがあるかどうかも分かりませんが、上の例題の場合ではなく、一般的な答えが知りたいです。

  • β進n桁の浮動小数点

    2進3桁、ML(絶対値最大の浮動小数点数)=1 MU(絶対値最小の浮動小数点数)=2の浮動小数点数の 体系で表現できる数は全部でいくつか、すべて挙げよ。 また、計算機イプシロンを求めよ。 ・・・っという問題がわからなくて困っています。 どなたか、解法手順またはアドバイスをよろしくお願いします。

  • 小数点⇔n進数のやり方

    いつもお世話になっております。 早速ですが、VB2008にて小数点⇔n進数のやり方がわからず困っています。 16進数 404ccccd 10進数 1078774989 2進数 1000000010011001100110011001101 小数点に変換すると3.2になるはずですが、やり方がわかりません。 CONVERTやbitconverter等試してみたのですがうまくいきません。 ネットで検索し、小数点からn進数は見つけたのですが、逆の方法が見つかりません。 逆演算すればとも思ったのですが、いまいちうまくいかず質問させていただきました。 宜しくお願いいたします。

  • 浮動小数点数

    再質問で畏れ入ります。 数値を32ビット浮動小数点形式で表す。指数部は2を基数とし、負数は2の補数で表現する。10進数0.375をこの2を基数とした浮動小数点形式で正規化したものはどれか。ただし結果は16進数で表現する。 答え:7FC00000 という問題です。 まず0.375を2進数に 0.011 正規化 0.11 * 2^-1 指数部-1を2進数で求める -0000 0001 ->1111 1111 仮数部符号は正の数なので0 0111 1111 ???? ???? ???? ???? ???? ???? と・・・ ここの部分からわかりません・・・ (なぜか手持ちの参考書には省略してあり・・・) 7Fの部分はこれで間違いないでしょうか? またそのあとのC00000 はどうやって導くのか教えてください。 お願いいたします

  • 循環小数

    「自然数÷自然数が割り切れないときには、必ず循環する小数になるのか」 これを証明します。 (証明) k:循環小数とする αk-βk=z (∃α、β、z∈N) k=z/αーβ(α>β) このとき z、(αーβ)∈N ゆえに 自然数÷自然数が割り切れないときには、必ず循環する小数になる この証明ではダメなのでしょうか?よろしくお願いします。