扫码关注官方订阅号
已知一个二进制数(数位可能有600位左右),例如 $a= 100010010;需要通过php判断出(从右往左)的 第0 第2 第3 第5 第6 第7位是0从而得到$ar0=array(0,2,3,5,6,7);$ar1=array(1,4,8);
应该如何实现呢?
小伙看你根骨奇佳,潜力无限,来学PHP伐。
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的位置 } }
$binary = "....."; $binary = str_split($binary); // 0 $a0 = array_keys(array_filter($binary, function ($bit) { return !$bit; })); // 1 $a1 = array_keys(array_filter($binary));
// 给定一个 2 进位数 $binaryNumber = 0b100010010; // $result[0] 存 0 的位数,$result[1] 存 1 的位数 $result = [[], []]; $binaryNumber <<= 1; // 先左移一位,方便之后循环 $location = 0; while ($binaryNumber >= 2) { $binaryNumber >>= 1; //先右移一位 $result[$binaryNumber & 1][] = $location++; }
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
for循环啊
先把2进制作为字符串分割每个数字后赋值给数组aTemp。
伪码: