如何用php判断一个二进制数中,哪些位是0 而 哪些是1?
伊谢尔伦
伊谢尔伦 2017-04-11 10:38:55
[PHP讨论组]

已知一个二进制数(数位可能有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伐。

全部回复(3)
ringa_lee

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++;
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号