当前位置: 移动技术网 > IT编程>开发语言>PHP > PHP两个n位的二进制整数相加问题的解决

PHP两个n位的二进制整数相加问题的解决

2018年09月23日  | 移动技术网IT编程  | 我要评论

两个n位的二进制整数相加问题php实现,供大家参考,具体内容如下

两个n位二进制数分别存储在两个n元数组a和b中,这两个整数的和存在一个n+1元的数组c中

答:

此问题主要是考察相加进位的问题,元素1+1 =0 并且往前进一位

add-binary(a,b)
  c=new integer[a.length+1]
  carry=0
  for i=a.length downto 1
    c[i+1]=(a[i]+b[i]+carry)%2
    carry=(a[i]+b[i]+carry)/2
  c[i]=carry

代码

<?php
function addbinary($a,$b){
 $c=array();
 $length=count($a);
 $carry=0;
 for($i=$length-1;$i>=0;$i--){
 //当前位的数字逻辑 1+1=0 1+0=1
 $c[$i+1]=($a[$i]+$b[$i]+$carry)%2;
 //进位的数字逻辑 1+1=1 1+0=0
 $carry=intval(($a[$i]+$b[$i]+$carry)/2);
 } 
 $c[$i+1]=$carry;
 return $c; 
}

$a=array(0,1,1,0);
$b=array(1,1,1,1);
$c=addbinary($a,$b);
var_dump($c);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网