0

整数内のすべての 1 ビット位置のリストを取得するためのより効率的/高速な方法を持っている人はいますか? 私はこれを持っています:

array_keys(
    str_split(
        strrev(
            decbin(1234)
        )
    ), '1', true
)

出力は次のとおりです。

array(1, 4, 6, 7, 10)
4

2 に答える 2

0

正規表現を試すことができますが、あなたのソリューションの方が優れているに違いありません。

preg_match_all('/1/', strrev(decbin(1234)), $matches, PREG_OFFSET_CAPTURE);
$output = array_map(function($item){
  return $item[1];
}, $matches[0]);

出力:

array (size=5)
  0 => int 1
  1 => int 4
  2 => int 6
  3 => int 7
  4 => int 10
于 2013-09-12T11:54:01.273 に答える