Decimalよりも16進数を使用する価値はいつですか?

DDD ... D の形式を10進数表現した 0xHHH ... H
という形式の16進表記を使用する価値があるためには、 >?

ここで、「価値がある」とは、「$ 0 $〜$ 2 ^ N-1
$」の範囲内で均一に分散した値の平均長さを短くすることです。ここで$ N $はビット数です。負の数は考慮されません。

たとえば、 18446744073709551615 は長さが20で、
0xFFFFFFFFFFFFFFFF
は長さが18であり、さらに多くのものがあるので、10進数で16進数を使用する価値がある$ N
その範囲内の10進数は16進数よりも短く、10進数がより短い範囲の10進数はより長い長さの16進数を補うものではないことは明らかです。

同じ問題を解決するための余分なクレジットですが、16進数の表現は次のとおりです。

  • HHH...Hh (e.g. E5F3h,
    3FEh)
  • DHHH...Hh (i.e. add leading zero if it starts with
    a letter, e.g. 0E5F3h, 3FEh)
ベストアンサー

最初の問題の解決方法は次のとおりです。

41 ビット。

推論:

(1から数えて、数学を簡単にする)

 DECIMAL
 最初の9 * 1 = 9の数字の場合、9 * 1 = 9桁が必要です。
 次の9 * 10 = 90の数字の場合、90 * 2 = 180桁が必要です。
 次の9 * 100 = 900の数字の場合、900 * 3 = 2700桁が必要です。
 一般に、$ n桁の数字($ 10 ^ {n-1} $〜$ 10 ^ n $の数字)の場合、$ 9n cdot 10 ^
{n-1} $の数字が必要です。
 これを合計すると、$ n $までの数字をすべて書くのに必要な桁数の公式が得られます。$(n frac {1}
{9}) cdot 10 ^ n + frac {1} {9} $。
 したがって、すべての$ 10 ^ n $数の平均は約$ n- frac {1} {9} $です。

 HEXADECIMAL
 最初の15桁の場合、15 * 3 = 45桁が必要です。
 次の15 * 16数字の場合、15 * 16 * 4 = 960桁が必要です。
 次の15 * 256の数字の場合、15 * 256 * 5 = 19200桁が必要です。
 一般に、$ x $数字($ 16 ^ {x-1} $〜$ 16 ^ x $の数字)の場合、$ 15(x + 2)
cdot 16 ^ {x-1} $の数字が必要です。 >  合計すると、最大$ x
$数字ですべての数値を書くために必要な桁数の公式が得られます。$(x + 2 frac {1} {15}) cdot 16 ^
x – frac {29} { 15} $。
 したがって、すべての$ 16 ^ x $数値の平均は約$ x + 2 – frac {1} {15} $です。

 これらの公式は$ n $と$ x $の整数値に対してのみ有効です(したがって、10進数の総数は$ 10 ^ n
$まで、16進数の場合は$ 16 ^ x
$まで)その点から、16進数は平均でより短くなるように結合されているので、それらが交差する場所を見ることができます。私たちは$ 10
^ n = 16 ^ x $を知っているので、$ x = n cdot log_ {16} 10 $です。これを式$ n –
frac {1} {9} = x + 2 – frac {1} {15} $に差し込みます:

 $ n – frac {1} {9} = n cdot log_ {16} 10 + 2 – frac
{1} {15} $

 $ n(1 – log_ {16} 10)= frac {29} {15} + frac {1} {9} =
frac {92} {45} $

 $ n = frac {92} {45(1 – log_ {16} 10)} $

 $ frac {92 log_2 10} {45(1 – log_ {16} 10}} = frac
{92} {45($) log_ {10} 2 – frac14}} approx 40.06
$です。したがって、40ビットで、
41ビットで10進数がより短い間に、16進表記が勝つことが期待されます。

第2の問題については、主方程式は次のようになる。

$ n – frac {1} {9} = x + 1 – frac {1} {15} $

これは、

$ frac {47} {45( log_ {10} 2 – frac14)} approx 20.47
$

 カットオフは既に 21ビットです。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です