0

プログラム内に数学の問題があります。問題は単純だと思いますが、どの用語を使用すればよいかわかりません。そのため、私自身の検索では何も役に立ちませんでした。

メソッドでいくつかの値を受け取ります。(ロジックに関して) 私が知っている唯一のことは、数値が複製可能なものになるということです。

つまり、受け取ることができる数値は予測可能であり、次のいずれかになります。

1
2
4
16
256
65536
etc

それらがどのインデックスに表示されるかを知る必要があります。つまり、1常に index 02at index 14at index 316is at index4などです。

大きな switch ステートメントを記述できることはわかっていますが、数式がより整然としたものになることを望んでいました。存在するかどうか、または私が使用している数学フォーラムの名前として手がかりがあるかどうか知っていますか.

4

4 に答える 4

4

リストした数値は 2 の累乗です。数値を累乗する逆関数は対数であるため、(ここでは用語を使用して) 数値からインデックスに逆算するために使用します。

var num = 256;
var ind = Math.Log(num, 2);

上記indは、numの 2 を底とする対数です。このコードは、どのベースでも機能します。そのベースを に置き換えるだけです2。2 の累乗のみを使用する場合は、入力のビット単位の表現に基づいてより高速な特別なケースのソリューションを使用できます。C# で整数の log2 を計算する最も簡単な方法は何ですか?を参照してください。

于 2013-11-07T13:29:02.087 に答える
1

数値の2を底とする対数を計算する必要があります

于 2013-11-07T13:29:39.907 に答える
1

ヒント: 結果について:

0 2
1 4
2 16
3 256
4 65536
5 4294967296
etc.

式は、与えられた整数 x に対して次のとおりです。

Math.Pow(2, Math.Pow(2, x));

あれは

2 to the power (2 to the power (x) )

式が分かれば、x について解くことができます (既に答えが得られているので、ここでは説明しません)。

于 2013-11-07T14:01:37.067 に答える