已知一个二进制数(数位可能有600位左右),例如
$a= 100010010;
需要通过php判断出(从右往左)的 第0 第2 第3 第5 第6 第7位是0
从而得到
$ar0=array(0,2,3,5,6,7);
$ar1=array(1,4,8);
应该如何实现呢?
已知一个二进制数(数位可能有600位左右),例如
$a= 100010010;
需要通过php判断出(从右往左)的 第0 第2 第3 第5 第6 第7位是0
从而得到
$ar0=array(0,2,3,5,6,7);
$ar1=array(1,4,8);
应该如何实现呢?
for循环啊
先把2进制作为字符串分割每个数字后赋值给数组aTemp。
伪码:
for(int i=0; i<aTemp.length; i++)
{
if((int)aTemp[i]>0)
{
a1.push(i); //1 记录1的位置
}
else
{
a2.push(i); //0 记录0的位置
}
}
// 给定一个 2 进位数
$binaryNumber = 0b100010010;
// $result[0] 存 0 的位数,$result[1] 存 1 的位数
$result = [[], []];
$binaryNumber <<= 1; // 先左移一位,方便之后循环
$location = 0;
while ($binaryNumber >= 2) {
$binaryNumber >>= 1; //先右移一位
$result[$binaryNumber & 1][] = $location++;
}
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
2 回答749 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.3k 阅读
1 回答694 阅读✓ 已解决