欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[PHP] 算法-两个n位的二进制整数相加问题PHP实现

程序员文章站 2022-06-15 23:18:23
两个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 ......

两个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);