プロが教えるわが家の防犯対策術!

2進数の1010を8進数に変換しようと今まで質問サイト等で教えていただいたほうほうでやってみたのですが、どうも答えが合いません。
1010を8進数にすると12になるはずですが、計算すると10になってしまいます。
1010という数字一つ一つに、(1/4*8)^mを乗算していくことで8進数を求めようとしています。
1*(1/4*8)^3+0*(1/4*8)^2+1*(1/4*8)^1+0*(1/4*8)^0=10

どちらか一方が一方の倍数だったら10進数に一度しなくても、直接変換できるそうなのでやってみたのですが、どうするとこの計算式は、12になるのでしょうか。

質問者からの補足コメント

  • ご回答有難うございます。
    下一桁目から求める方法で、123/5=24...3
    24/5=4...4
    4/5=0...4
    なので123の5進数は、433ですね。

    No.4の回答に寄せられた補足コメントです。 補足日時:2016/11/11 19:49
  • うーん・・・

    ご回答有難うございます。
    申し訳ありません。2進数1010の意味であるという
    >>1×2³ + 0×2² + 1×2¹ + 0×2⁰
    >>8  + 0  +  2  +  0 = 10
    >>8×10⁰ + 0×10⁰ + 2×10⁰ + 0×10⁰ = 10×10⁰
    >>・・……       ・
    >>これは、・・・・・・・・・・ ということ

    が良く理解できませんでした。なぜ、そこで(1/4*8)^mを乗算するのではなく2^mで乗算しているのでしょうか。
    申し訳ありませんが、全体的に理解することができませんでした。

    No.8の回答に寄せられた補足コメントです。 補足日時:2016/11/11 19:55
  • うーん・・・

    疑問があるのですが、1010を10進数にする過程で8と2が算出されますが、その8と2に、10^0を乗算しています。
    8×10⁰ + 0×10⁰ + 2×10⁰ + 0×10⁰ = 10×10⁰
    この式の意味が良くわかりませんでした。

    No.9の回答に寄せられた補足コメントです。 補足日時:2016/11/16 19:19
  • 今更NO.8の話で、申し訳ないのですが三点リーダーって、数を表していたのですね。文章などで見られる「…」にしか見えなかったので、「これは、………・ ということ8進数でしたら<略>」って肝心な部分はなんなんだ…と思っていました。
    また、NO.8に対する補足で「なぜ、そこで(1/4*8)^mを乗算するのではなく2^mで乗算しているのでしょうか」などと頓珍漢なことを言ってしまい申し訳ないです。
    ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12166264687
    上記で7進数から14進数に直接変換する際、7進数である666を14/2^mで乗算していた為つい分数で計算していたのですが、別の指摘にもある通り、分数で計算する必要はないし、2^mで計算するのは、(1/4*8)で計算するのと変わらないわけなので疑問に思うのは違っていました。

      補足日時:2016/11/16 19:23
  • ご回答有難うございます。
    >>a・n^p <略>
    >> =(a・r^p)・m^p
    上記の式に、4進数の1111でpが3桁目という条件で式を埋めてみると
    1*4^3=1*(r*m)^3=1*r^3*m^3=(1*r^3)*m^3になりました。
    n=r*mということは、4=r*mなのでr*mは、2*2となります。
    (1*r^3)*m^3という式に2*2を代入すると、1*2^3*2~3となりました。
    ということは、m進数、この式で言う2進数の三桁目は、1*2^3、つまり8になってしまいます。
    この場合、8は、そのまま計算すべきなのでしょうか。それとも何か処理が必要なのでしょうか。
    この8を4進数1111の三桁目にかけ、同じ要領で各桁に乗算していくことで直接変換ができるということでしょうか。
    試しに計算を続けた結果、下記のようになりました。
    1*8+1*4+1*2+1*1=15

    No.11の回答に寄せられた補足コメントです。 補足日時:2016/11/17 19:14
  • どう思う?

    ご回答有難うございます。
    >>2進数(m=2)に変換するならそうですが、例えば、8進数に変換するなら 4=r・8 から、 r=1/2 となります。
    つまり、2進数から8進数なので、4進数の1111を8進数にするとき4(n)=1/2(r)*8(m)、
    1*4^3=1*(1/2*8)^3=1*1/2^3*8^3=(1*1/2^3)*8^3になったのですが、8進数にしないとならないので、式内の8を繰り上げる必要があるのですが、

    >>8・2^3
    >> = (2^3 + 0 ) ・2^3
    >> = 2^3・2^3 + 0 ・2^3
    >> = 1 ・ 2^6 + 0 ・2^3

    で、二行目の式で0がありますが、8が繰り上げになったので0になったということですか。
    2^6というのは、2^3・2^3 が合わさったものですか。

    No.12の回答に寄せられた補足コメントです。 補足日時:2016/11/18 19:55

A 回答 (12件中1~10件)

補足について。


ぜんぜんやり方が違います。
理解できないなら、この方法は忘れてしまうことをお勧めします。


・n進→m進 変換なので、まず、nがいくつで、mがいくつ、というのが決まった状態から計算をはじめます。
計算しなければいけないのは、 r だけです。

4進数の1111 なら n=4 ですが、それを何進数に変換したいのですか?

> n=r*mということは、4=r*mなのでr*mは、2*2となります。

なりません。
2進数(m=2)に変換するならそうですが、例えば、8進数に変換するなら 4=r・8 から、 r=1/2 となります。
くどいようですが、 m は先に決まっています。


m=2 として話を進めると
> この場合、8は、そのまま計算すべきなのでしょうか。それとも何か処理が必要なのでしょうか。

前の回答に、ちゃんと書きました。
> 正しくm進数に変換するには、 各(a・r^p)を求めた後で、正しい範囲になるように、繰り上げ繰下げといった変形を行う必要があります。

この場合なら、 0≦8≦1 ではないので、変形が必要です。
8・2^3
= (2^3 + 0 ) ・2^3
= 2^3・2^3 + 0 ・2^3
= 1 ・ 2^6 + 0 ・2^3
とすれば、 2^6の桁に1繰り上げて、 2^3 の桁は 0 というようになります。
ただ、これは 4^3 の桁だけの結果なので、他の桁での繰り上げや繰り下げで、 2^6 の値も変わるかもしれません。

この例では比較的簡単にできましたが、どんな場合でもうまくできるとは限りません。
> 10進を経由するよりはるかに面倒になることもあります。
とも、前回書いています。



> 試しに計算を続けた結果、下記のようになりました。
> 1*8+1*4+1*2+1*1=15

m^p はどこへ行ってしまったのですか?
8,4,2,1 が m^p を意味しているなら、r^p はどこへいってしまったのですか?
この回答への補足あり
    • good
    • 0

> 下一桁目から求める方法で



そういうことではなく、「どちらか一方が一方の倍数だったら」とあるので、10 = 5・2 を例に出してみました。




ある n進数のp桁目の「数字」を a とすると、その桁は
a・n^p
を意味しています。
念の為、p,a については、次のようになっています。
・ p は整数。 p=0 が整数の最小の位(1の位)、-1 が小数第1位です。
・aは 0≦a≦ n-1 の整数です。

ここで、 n = r・m という m(2以上の自然数)、 r を考えます。
すると
a・n^p
= a・(r・m)^p
=a・r^p・m^p
=(a・r^p)・m^p
と変形できます。
これは、 m 進法として考えるなら
「m進数のp桁目の「数字」は (a・r^p) 」
というように解釈できます。

これを使って各桁毎に (a・r^p) を計算すれば、n進→10進→m進と計算しないでも直接変換できる。
というのが、「どちらか一方が一方の倍数の場合の直接変換」の考えです。
実際の計算では、 m^p は計算しないで、そのままの形にしておくことが重要です。


と、簡単にできればいいのですが、実際には大きな欠点があります。
 n進では、 aは 0≦a≦ n-1 の整数
というのが約束であったように、上記の (a・r^p) が m進数のp桁目の「数字」 として成り立つには
 (a・r^p)は 0≦(a・r^p)≦ m-1 の整数
でなければなりません。
ですが、この範囲に収まる整数になる保証はありません。

正しくm進数に変換するには、 各(a・r^p)を求めた後で、正しい範囲になるように、繰り上げ繰下げといった変形を行う必要があります。
10進を経由するよりはるかに面倒になることもあります。



この
・ n進数 ... + a・n^p + ... を mのべき乗の式 ... + (a・r^p) ・ m^p + ... に変換する
;上記式を変形して、 m進数 ... + b・m^p + ... の形にする
という「正しい変換手順」を理解していないから、正しい答えに辿り着けないのです。
この回答への補足あり
    • good
    • 0

「(1/4*8)^m」というみょうちくりんなものは, いったいどこから湧いて出たんだろうか.



1/4*8 = 2 ではあるんだけど, なぜ素直に「2」と書かないのかが謎.
    • good
    • 0

>申し訳ありませんが、全体的に理解することができませんでした。


そのためには、まず私たちが慣れ親しんでいる10進数というものを正確に理解しておく必要があります。
[小学校]
1) 桁上がり(2年生)のところで、次のような練習をしたと思います。
 http://www.mext.go.jp/a_menu/shotou/new-cs/youry …

●●
・・・・
●●●●●●●●●●  10個
●●●●●●●●●●● 11個
 ここでも11とは、10の塊ひとつと1個と考える。
●●●●●●●●●● ●●
 10の塊一つと、2個

10ずつまとめると、大きな数を数えやすい。
ここで注意しなければならないのは、11という(10進数でいうところの)数と、個数の区別なのです。・・・小学校の算数は数学科卒業した人が教えるのではなく素人が教えるので、かの概念が子供たちに理解されにくい・・
 あくまでも存在するのは ●●●●●●●●●●●●であって、10進数でいえば、11 という数字で表される。

  もし、人の指が8本しかなければ、
  ●●●●●●●● ●●●●  (8進数で14)10進数で12
  と表していたでしょう。(^^)

2) 2学年で「かけざん」も学びますが、そのときに
○+○+○ を○を三回加えるという意味で、×3とあらわす

中学で、数と演算の区別を学びましたね。
 2 - 3 ではなく、(+2) + (-3) と頭の切り替えを求められて、引き算と割り算がなくなった。すなわち、2 - 3 は、(+2) + (-3)、2 ÷ 3 ではなく、(+2) × (1/3)
 それによって、未知数でも自在に操れるようになった。その代表が交換則
  a + b = b + a、a ÷ b = a ×(1/b) = (1/b) × a
 交換則、結合、分配が自在にできるようになった。

 それによって、
 ○ × 3 は、3×○ と表せるようになった。交換則

【基礎から身に着ける】数学は、このように基礎からきちんと身に着けることが大事で、一つでも抜けると、わからなくなる。

 そのうえで

1    0    1  0  の意味を考えると
1×2³ + 0×2² + 1×2¹ + 0×2⁰
 8  + 0  +  2  +  0 = 10
8×10⁰ + 0×10⁰ + 2×10⁰ + 0×10⁰ = 10×10⁰
・・……       ・        ̄ ̄ ̄ ̄10進数で表すと
10進数であろうとなかろうと、
●●●●●●●●●●
あるということ、

これを8進数で数えると
●●●●●●●●●●

●●●●●●●●●●
12
●●●●●●●●●●
123
●●●●●●●●●●
124
●●●●●●●●●●
1245
●●●●●●●●●●
12456
●●●●●●●●●●
124567
●●●●●●●● ●●
124567(10)・・桁上がり
●●●●●●●● ●●
124567(10) 1
●●●●●●●● ●●
124567(10) 12

では、
●●●●●●●●●● を二進数で表すと

●●●●●●●●●●


●●  ●●●●●●●●
1(10) 桁上がり
●●  ●●●●●●●●
1(10)   1
●●  ●●●●●●●●
(10)   1(10) 桁上がり
(10+10) 桁上がり
100
・・

ここで、何進数であれ、桁は
  二進数  10進数
a⁰  1    1
a¹  10    2
a²  100   4
a³  1000  8
a⁴  10000 16
a⁵  100000 32
a⁶  1000000 64

  8進数  10進数
a⁰  1     1
a¹  10    8
a²  100   16
a³  1000  32
a⁴  10000  64
a⁵  100000 128
a⁶  1000000 256

慣れ親しんだ10進数に直したほうがわかりやすいのは
1010 = 1×2³ + 0×2² + 1×2¹ + 0×2⁰
     8       2
10進数で、10だからです。

逆にこれを2進数にする場合は
a⁰  1    1
a¹  10    2
a²  100   4
a³  1000  8  割れる最大数
a⁴  10000 16  大きすぎる

  10/8 = 1.*****
   2³ 下から4桁目
1 ????
 10-8=2
2は、
a⁰  1    1
a¹  10    2  割れる最大数
a²  100   4  大きすぎる
 2/2 = 1.0  割り切れる
よって、
1010

★そして8進数にする場合は
   10進数
8⁰ = 1
8¹ = 8
8² = 64
10は、8でなら割れるので
1が立つ
10 - 1×8  = 2
2は、1(8⁰)の二倍なので、10進数の2は8進数の2
10 + 2 = 12

★ 数と、その表記(何進数)で言っているかを区別できないから、わからなくなる。
この回答への補足あり
    • good
    • 0

1    0    1  0  の意味は


1×2³ + 0×2² + 1×2¹ + 0×2⁰
 8  + 0  +  2  +  0 = 10
8×10⁰ + 0×10⁰ + 2×10⁰ + 0×10⁰ = 10×10⁰
・・……       ・
これは、・・・・・・・・・・ ということ
8進数でしたら

 1       0    1  0  の意味は
 8      + 0  +  2  +  0 = 10
1×8¹ + 0×8⁰ + 0×8⁰ + 2×8⁰ + 0×8⁰ = 1×8¹ + 2×8⁰ = 12 (8進数)


数を正確に理解しておかないと。覚えるのではなく、その理屈を理解すること
この回答への補足あり
    • good
    • 0

>(ax8+bx4+c)x10+(dx8+ex4+f) とか(^-^;



(ax4+bx2+c)x10+(dx4+ex2+f)

でした。まあ、どうでもいいんですが(^-^;
    • good
    • 0

>1*(1/4*8)^3+0*(1/4*8)^2+1*(1/4*8)^1+0*(1/4*8)^0=10


なんか意味不明ですね。10進表記で計算すると、8進と
同じ表記になる というような計算を狙っているのかな?

2^3=8^1を利用して、abcdef(2)なら

(ax8+bx4+c)x10+(dx8+ex4+f) とか(^-^;

まあ素直に2進3桁を8進-桁に変換するのが
簡単だと思います。
    • good
    • 0

2進数の1010=1×2³+0×2²+1×2+0=2³+2=1×8+2を8進法で12とよみますよ。


10進法の1×10+2を10進法で12とよむのとおなじことです。
    • good
    • 0

1*(1/4*8)^3+0*(1/4*8)^2+1*(1/4*8)^1+0*(1/4*8)^0


=1*2^3+0*2^2+1*2^1+0*2^0
= 1*8 + 0*4 + 1 * 2 + 0 * 1
= 8 +2 = 10
って計算していませんか?

8がある時点で8進数ではないし、8+2 = 10 は10進法での計算です。

変換の計算するなら、今何進法で計算しているか、常に意識する必要があります。

> どちらか一方が一方の倍数だったら10進数に一度しなくても、直接変換できる
「倍数」なだけでは難しいです。
例えば。123(10進)を 5進に変えてみてください。
この回答への補足あり
    • good
    • 1

訂正


3桁区切りはそのままですが
1010=1と010
=001と010
=1と2
=12
です。
    • good
    • 0

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