最も近い値を見つける問題です。アイデアを教えてください
何かを作るには、A の値がわかっている場合、B を見つける必要があります。B の値は A より小さく、2 の平方数です。
例: A=765、B が必要な場合、B は 512 に等しくなります。 Aの値が最大範囲なので、2の1乗、2の2乗、2の3乗という方法を考えました。 。 。 。 、配列として保存され、A 値がこの配列と比較されて、要件を満たす B 値が検索されます。
しかし、もっと良い方法があるはずだと思います。いくつかアイデアを教えてください。ありがとう!
-----解決策---------
function get2str($n)
{
$len = strlen(decbin($n));
$str2 = '1'.str_repeat('0', $len-1);
return binding($str2); 🎜>}
var_dump(get2str(578));
// int(512)
アイデアは次のとおりです:
4: 100 3
8: 1000 4
16: 10000 5
32: 100000 6
64: 1000000 7
128: 10000000 8
256: 100000000 9
512: 1000000000 10
1024: 10000000000 11
2048: 100000000000 12
578: 1001000010 10
これらが 10 進数であることがわかります: バイナリ文字列の長さ
578 と 512 のバイナリ文字列の長さは両方とも 10 バイトです。 PHP でビット演算を行う方法がわからないので、もっと効率的で簡単な解決策があるはずだと考えました。
------解決策---------指数と対数を確認してください
PHP コード
<br>------解決策-----------<font color="#e78608"></font>1、一番左の1、ビット演算をそのままにしておきます。 <br><br>PHP コード
<br>------解決策---------<font color="#e78608"></font>バイナリで計算する場合、<br> PHP コード
<br>------解決策---------<font color="#e78608"></font><br>