举例,比如说下面可以组合成7
1|2|4; // 7
那么比如我给一个15,怎么拆分成:1、2、4、8,或者是任意其他数,怎么进行拆分
Javascript版的算法:
function split(n) {
n = n|0; // 将浮点数n转化为正整数
let pad = 0;
const arr = []; // 用于保存结果的数组
while(n) {
if (n&1) arr.push(1<<pad);
pad++;
n >>= 1;
}
return arr;
}
对应的 PHP 版本:
function split($n) {
$n |= 0;
$pad = 0;
$arr = array();
while ($n) {
if ($n & 1) array_push($arr, 1 << $pad);
$pad++;
$n >>= 1;
}
return $arr;
}