<?
$test="101010";
$m=strlen($test);
for($n=1;$n<=$m;$n++){
if(substr($test,$m-$n,1)==1){
$rel[]=$n-1;
}
}
function func(&$r){
$r=pow(2,$r);
}
@array_walk($rel,"func");
print_r($rel);echo array_sum($rel);
?>

解决方案 »

  1.   

    <?
    $test="101010";
    $m=strlen($test);
    for($n=1;$n<=$m;$n++){
    if(substr($test,$m-$n,1)==1){
    $tem="1";
    for($i=1;$i<$n;$i++)
    $tem.="0";
    $rel[]=$tem;
    }
    }
    print_r($rel);
    ?>
      

  2.   

    if (curValue&curForm.elements[j].value)指culValue和curForm.elements[j].value按位运算,看结果是否为真
      

  3.   

    1.
    我的方法向来是最笨的。
    我也不知道为什么要写这样不实用的代码。由于论坛不支持指数形式,所以只能这样讲了。101010=1*(2的5次方)+0*(2的4次方)+1*(2的3次方)+0*(2的2次方)+1*(2的1次方)+0*(2的0次方)在php中
    $a="101010000000000000000000";//二进制数,这里当作字符来处理
    $b=strlen($a);//求出位数for($i=0;$<$b;$i++){
    $c+=substr($a,$i,$i+1);
    $d[$i]=substr($a,$i,$i+1);
    $e.=$d[$i]."+";
    }echo $e;//连加形式
    echo $c;//看看十进制数,好像有函数 bindec 可以实现吧。没有调试,不知道是否正确。
    我在做什么?糊涂中......2.
    我不会javascript,所以也没有看这段代码。
    if (curValue&curForm.elements[j].value) 
    好像是:
    把curValue和在名为curForm表单中的第j个元素值作位运算后判断是否为0。