英文:
Given an array of ones and zeroes, convert the equivalent binary value to an integer.PHP
问题
以下是翻译好的内容:
我尝试了以下解决方案,但不明白为什么结果不正确,希望能得到帮助。非常感谢。
function binaryArrayToNumber($arr) {
$sumarr = [];
for ($i = count($arr); $i > 0; $i--) {
$power = pow(2, ($i - 1));
$sumarr[] = $power * $arr[$i - 1];
}
return array_sum($sumarr);
}
示例答案将是
测试: [1, 1, 1, 1] ==> 15
测试: [1, 0, 1, 1] ==> 11
英文:
I have tried the below solution but i dont see why i dont the get the results right , any help is appreciated. Thanks a lot.
function binaryArrayToNumber($arr) {
$sumarr = [];
for($i=count($arr);$i>0 ;$i--){
$power= pow(2,($i-1));
$sumarr[]=$power*$arr[$i-1];
}
return array_sum($sumarr);
}
Example answer would be
Testing: [1, 1, 1, 1] ==> 15
Testing: [1, 0, 1, 1] ==> 11
答案1
得分: 2
你的代码中存在逻辑错误。你的pow
计算是错误的,因为你使用了$i
来计算幂次。
尝试以下代码,它将输出你期望的结果:
function binaryArrayToNumber($arr) {
$num = 0;
$pow = 0;
for($i = count($arr) - 1; $i >= 0; $i--) {
$num += pow(2, ($pow++)) * $arr[$i];
}
return $num;
}
echo binaryArrayToNumber([1, 1, 1, 1]);
echo binaryArrayToNumber([1, 0, 1, 1]);
输出:
15
11
英文:
You've got a logical error in your code. Your pow
calculation was incorrect as you were using $i
to calculate the power.
Try the following which will output the result you expect:
function binaryArrayToNumber($arr) {
$num = 0;
$pow = 0;
for($i = count($arr) - 1; $i >= 0; $i--) {
$num += pow(2, ($pow++)) * $arr[$i];
}
return $num;
}
echo binaryArrayToNumber([1, 1, 1, 1]);
echo binaryArrayToNumber([1, 0, 1, 1]);
Output:
15
11
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论