• ベストアンサー

16進数n桁を10進数で表すときに必要な桁数

16進数n桁を10進数で表すとき何桁必要なのかを調べていたのですが 例:FF(16進2桁)→255(10進3桁) 計算式はlog10(16^n)桁(端数繰り上げ)になると思います。 ところで16進n桁に対して10進は2*n桁あれば十分なのかどうかを知りたいのです。 つまり16進数100桁に対して10進数200桁あれば十分ですが nが大きい数字でも成立するのかどうか。 log10(16^n) < 2 * n になるのかな?? 当方数学的な知識が乏しいものでそうなるのかどうかわかりません。 是非ご教授頂けないでしょうか。宜しくお願い致します。

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

  • ベストアンサー
  • tatsumi01
  • ベストアンサー率30% (976/3185)
回答No.1

> 計算式はlog10(16^n)桁(端数繰り上げ)になると思います。 これで正解です。 log10(16^n) = n*log10(16) = 1.2*n (端数繰り上げ) ですから、10進は [1.2*n+1]桁 で十分で、2*n桁は (もちろん十分ですが) 過剰です。(ここで [] は切捨てです。) 16進数100桁は 10進数121桁です。

furyfox
質問者

お礼

>log10(16^n) = n*log10(16) 迅速かつ適切なご回答、有り難うございます。 そういう変換ができる事を久しぶりに思い出しました。

関連するQ&A

  • ナンバーズ4の各桁の合計数がNのときの組み合わせの数

    ナンバーズ4についての質問です。 ナンバーズ4の各桁を合計した値をNとします(0≦N≦36、Nは自然数)  ⇒ナンバーズ4は0000~9999の中から数字を選択するため 各桁の合計値がNのときにナンバーズ4の組み合わせは 何パターンあるのか求める方法を教えてください。 例)N=0のときは0000の1パターン   N=1のときは0001 0010 0100 1000の4パターン これを上記のようなアナログなやり方ではなく 数式で求めたいのです。 よろしくお願いいたします。

  • 数学の問題 場合の数と漸化式

    数学の問題 数字1,2,3をn個並べてできるn桁の数全体を考える。そのうち1が奇数回現れるものの個数をa(n)、1が偶数回現れるか全く現れないものの個数をb(n)とする。 a(n+1)、b(n+1)をa(n)、b(n)を用いて表せ。 という問題です。 説明された考え方 a(n+1)について 1が奇数回現れている数の一番左に1桁の数を加えるとすると 1が奇数回でないといけないから2か3である。 よって、2a(n) 1が偶数回現れている数の一番左に1桁の数を加えるとすると 1が偶数回でないといけないから1である。 よって、b(n) 以上より、a(n+1)=2a(n)+b(n) 同様にして、b(n+1)=a(n)+2b(n) が答えです。 解説を聞く前に自分で考えたその考え方は同じでした。 n桁の数に1桁の数を加えるというやり方です。 しかし、計算が違いました。 説明では、「一番左に1桁加える」として計算していますが 最初、n桁の数の場合、その数と数の間はn+1あるから そのn+1の間から一か所選んで、そこに2か3を入れる、そしてそれがa(n)個あるから a(n+1)=(n+1)C1 * 2 * a(n) + (n+1)C1 * 1 *b(n) を計算しました。 何がいけないのでしょうか? 一番左に加えると決めつけてしまってもいいのでしょうか? お願いします。

  • 7桁の数字からの組み合わせ数は?

    数字の組み合わせの数がいくつあるかを調べたかったのですが、計算方法が分からなかったため質問させていただきます。 まず任意の7桁の数字を選びます。何でも良いのですが例えば「1234567」(A)とします。 0000001~9999999までの7桁の数字があるとして、(A)の数字と照らし合わせて、1つ数字が適合する数、2つ数字が適合する数、3つ数字が適合する数、4つ数字が適合する数、5つ数字が適合する数、6つ数字が適合する数、7つ数字が適合する数はそれぞれいくつになるでしょうか。 適合する際の数字の順番などは関係なく、例えば「0001000」であれば「1」が1つ適合しているとみなします。また、1つの数字は1つしか適合できないという条件です。「1100000」であれば、1は1回しか適合できないので、適合数は1となります。「2345671」であれば7つ適合していると見ます。 数学からだいぶ遠ざかっているため、計算する方法をお教えいただけると助かります。 質問が分かりにくいようでしたら、補足説明いたしますのでぜひよろしくお願いいたします。

  • 2桁の自然数はいくつあるか

    ■6で割ると5余り、8で割ると7余るような2桁の自然数はいくつあるか。■という問題について悩んでいます。 解説によると、 6で割ると5余る数は6a+5、8で割ると7余る数は8b+7で表される(a,bは自然数)。 この2つの条件を満たす2桁の自然数Nは、 N=6a+5=8b+7≦99…(1) (1)の辺々に1を加えると、 N+1=6a+6=8b+8 =6(a+1)=8(b+a)≦100 よって、N+1は、6と8の最小公倍数24の倍数である。 100以下の自然数で、24の倍数であるのは、24、48、72、96であるから、Nは23、47、71、95の4個である。 とのことなのですが、何故(1)の辺々に1を加えたのかが分かりません。 どなたかご教授お願いします。

  • 7で割ると3余り、11で割ると4余る3ケタの自然数は何個あるか。

    7で割ると3余り、11で割ると4余る3ケタの自然数は何個あるか。 という問題で、 N=7m+3=11k+4とおいて、 m=(11k+1)/7  =k+(4k+1)/7 より、4k+1=7n k=(7n-1)/4 を代入して、 N=11{(7n-1)/4}+4  =(77n+5)/4 100≦N<1000より 100≦(77n+5)/4<1000 6≦n≦51 51-6+1=46個? となりました。 でも正解は12個でした。 知っている他のやり方でこの問題をすると、 7m+3=11k+4 7m=11k+1…(1) の一例を考えて入れてみて、 7*8=11*5+1…(2) (1)-(2)より、 7(m-8)=11(k-5) 7と11は互いに素であるので、 m-8=11nより m=11n+8 これをNの式に代入して、 N=77n+59 100≦77n+59<1000 1≦n≦12 ∴12個 となり、正解にたどりつけました。最初の方法でなぜ正解にたどりつけなかったのかがわかりません。何か条件を忘れているのでしょうか。2つのやり方の違い、最初のやり方の不足点を教えてください。

  • 4桁の数でのhundredの使い方

    During his life, Edison made nearly 1,300 inventions. という文で、1,300は one thousand three hundred thirteen hundred のいずれに読むのが普通なのでしょうか。 また、数字をthirteen hundredのように 2桁の数 + hundred で読むのは、 1,000 から 9,900まで可能でしょうか。 下2桁が00でなくて、端数が付いていた場合はどうでしょうか。

  • 自然数を5進法で表すには??

    【問】 xは10桁の自然数で、その最高位の数は3である。このxを5進法で表すと何桁となるか。 ただし、log10(2)=0.3010 log10(3)=0.4771とする。 という問題なのですが、自分で考えてみて 3*10^9≦x≦4*10^9 log10(3)+9≦log10(x)≦log10(4)+9 9.4771≦log10(x)≦9.6020  ……(1) 5^(n-1)≦x≦5^n n-1≦log5(x)≦n    ・    ・    ・ というとこまで考えたのですが、この先どうすればよいかわかりません。 よろしくお願いします。

  • nは3桁の正の整数で√n/12が整数になる数は何個

    nは3桁の正の整数で√n/12が整数になる数は何個ですか? この問題の解き方教えてください。

  • 桁数を求めるプログラム。

    入力した数字の桁数を表示させるというプログラムを考えています。 例) 135 この数字の桁数は3桁です。 などと表示させたいと思っています。 それで、私は入力した数値を10で割っていって入力した数値aがa<=0になったらループを終了して 何回ループしたかのカウンタで桁数を表示させようかと考えました。 たとえば135→13.5→1.35→0.135で整数部分が0となるのでループを打ち切って 3回繰り返したので3桁と表示させたいと思いました。 それでプログラムを考えてみたのですが、どうにもうまくいきいません。 どのように修正したら桁数が表示できるようになるでしょうか? #include <stdio.h> main() { double a=0; int n=1; scanf("%d",&a); while(1) { a=a/10.0; if(a<=0){ break; } n++; } printf("その数は%d桁です。\n",n); }

  • 有効数字N桁のマクロについて

    有効数字N桁の処理をするマクロ ROUND2(aa,NN) aa処理する数字、 NN:有効数字桁数 ROUND2 = Application.Round(aa, -Int(Application.Log(Abs(aa))) - 1 + nn) をつかって、有効数字N桁表示をさせるようにしています。これを使って1.012や0.304という数字を有効数字2桁で処理しセルに値を返すと1や0.3と表示してしまいます。 これを1.0や0.30といった形で有効数字で丸めた値そのままをセルに返したいのですが、どのようなマクロを追加すればよいのでしょうか? 説明がわかりにくいかとおもいますが、よろしくお願いします。