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

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

程序员文章站 2022-06-09 12:39:15
两个n位的二进制整数相加问题php实现,供大家参考,具体内容如下 两个n位二进制数分别存储在两个n元数组a和b中,这两个整数的和存在一个n+1元的数组c中 答:...

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

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