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

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

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

(0)

相关推荐

  • PHP数组相加操作及与array_merge的区别浅析

    发现问题 今天看到一段代码,是这么写的,感觉不熟悉,下面粘贴出来看看: <?php $array_one = [ 内容 ]; $array_two = [ 内容 ]; //关键的在这里 $array_result = $array_one + $array_two; echo "<pre/>"; print_r($array_result); ?> 我感觉奇怪的地方,就是数组$array_one与数组$array_two直接进行相加操作,我之前进行数组合并操作都

  • php二维数组用键名分组相加实例函数

    本文介绍一篇关于php 二维数组以某一键名进行分组相加的实例程序,如果是从数据库里取数据的时候大可以SELECT SUM(t_value),t_id FROM t_table GROUP BY t_id,但是如果是在php程序中处理类似的问题就稍微麻烦点了,这里给个函数就是处理类似的问题 复制代码 代码如下: <?php /* 函数功能:对二维数组以某一键名进行分组相加,返回新的二维数组  * 参数说明:$arr-源数组:$new_arr-相加后得到的新数组:$target_key-要分组的键名

  • php通过排列组合实现1到9数字相加都等于20的方法

    本文实例讲述了php通过排列组合实现1到9数字相加都等于20的方法.分享给大家供大家参考.具体实现方法如下: <?php set_time_limit(0); /* 函数说明:huoqu_zhuhe($eq,$jiashu,$isone=0) 参数说明:$eq---几个数相加的总和: $jiashu-------加数数组:$jiashu=array(1,2,3,4,5,6,7,8,9),可以使用的加数: $isone---是否要每次使用不同的加数,唯一性,1是 0 不,默认1 返回类型:数组,数

  • php中对2个数组相加的函数

    复制代码 代码如下: <?php function array_add($a,$b){ //根据键名获取两个数组的交集 $arr=array_intersect_key($a, $b); //遍历第二个数组,如果键名不存在与第一个数组,将数组元素增加到第一个数组 foreach($b as $key=>$value){ if(!array_key_exists($key, $a)){ $a[$key]=$value; } } //计算键名相同的数组元素的和,并且替换原数组中相同键名所对应的元素

  • php实现两个数组相加的方法

    本文实例讲述了php实现两个数组相加的方法.分享给大家供大家参考.具体如下: 实例1: <?php $arr1 = array("a"=>"朝阳区","b"=>"海淀区"); $arr2 = array("h"=>"西城区","a"=>"东城区","b"=>"丰台区");

  • php数组相加 array(“a”)+array(“b”)结果还是array(“a”)

    在网上看到一道题: array("a")+array("b")的结果是___ A.array("a","b")B.array("b","a")C.array("b")D.array("a") 答案:D php两个数组相加,为什么结果还是不变呢? 因为,它们等效于array("0″=>"a")+array(&quo

  • PHP中array_merge和array相加的区别分析

    首先来看看键名是string,两者区别: 复制代码 代码如下: <?php$arr1 = array('a'=>'PHP');$arr2 = array('a'=>'JAVA');//如果键名为字符,且键名相同,array_merge()后面数组元素值会覆盖前面数组元素值print_r(array_merge($arr1,$arr2)); //Array ( [a] => JAVA )//如果键名为字符,且键名相同,数组相加会将最先出现的值作为结果print_r($arr1+$ar

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

    两个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]=carr

  • java中两个字符串的拼接、整数相加和浮点数相加实现代码

    编写一个Java应用程序,从键盘读取用户输入两个字符串,并重载3个函数分别实现这两个字符串的拼接.整数相加和浮点数相加,并输出结果.要进行异常处理,对输入的不符合要求的字符串提示给用户 package zyy.wxt.demo; import java.util.Scanner; public class overload { public static void main(String[] args) { String s1 = null, s2 = null; Scanner sc = ne

  • JS取数字小数点后两位或n位的简单方法

    在js中有时要用到取float数字的小数点后两位的情况. var num=10/3; function f(num,n){ return parseInt(num*Math.pow(10,n)+0.5,10)/Math.pow(10,n); } alert(f(num,2)); 以上就是小编为大家带来的JS取数字小数点后两位或n位的简单方法全部内容了,希望大家多多支持我们~

  • java中超过long范围的超大整数相加算法详解(面试高频)

    java里有数字long来表示大的整数,如果两个数字的范围超过了long,要做加法算法怎么做呢? 这个问题在面试中经常碰到,如果之前没有经历的,可能一时有点想不起来怎么做. 下面我们来分析一下,两个数字超过了long的范围,那显然不能用java中的基本数字类型来计算了. 我们可以想小时候刚学习加法的竖式运算,个位对个位,十位对十位,百位对百位...以此类推.当个位满十向十位进1,十位满十向百位进1...以此类推,就这样完成了运算. 表示出来如下: 1 4 5   + 2 6 9 --------

  • android整数二分模板彻底解决边界问题

    目录 1.区间 2.例题 01:查找最接近的元素 1.区间 //区间分为[l,mid]和[mid+1,r],如下,x<=a[mid]的判断条件,使得x要么在[l,mid],要么[mid+1,r] //最终l会等于r while(l<r) { int mid=l+r>>1; if(a[mid]>=x)r=mid; else l=mid+1; } //区间分为[l,mid-1]和[mid,r],如下,x>=a[mid]的判断条件,使得x要么在[l,mid-1],要么[mid

  • PHP之浮点数计算比较以及取整数不准确的解决办法

    php有意思的现象,应该是很多编程语言都会有这样的现象.这个是因为计算机的本身对浮点数识别的问题.....下面通过代码给大家展示下: $f = 0.58; var_dump(intval($f * 100 *100)); //结果5799 var_dump((float)($f * 100 *100)); //结果5800 echo (int)((0.1+0.7)*10); //结果7 echo (float)((0.1+0.7)*10); //结果8 <?php $a = 0.1; $b =

  • ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法

    本文实例讲述了ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法.分享给大家供大家参考.具体方法如下: 这种情况是在 magic_quotes_gpc 开启的情况下发生的.原因是thinkphp在入库的时候没有判断 magic_quotes_gpc 是否开启,不管三七二十一地进行了转义处理. 解决办法是在入口文件增加如下代码则可: 复制代码 代码如下: if (!get_magic_quotes_gpc()) {      function addslashes_deep($valu

  • python两个_多个字典合并相加的实例代码

    这只是符合比较正常的需求和场景. #一.适用合并两个字典(key不能相同否则会被覆盖),简单,好用. A = {'a': 11, 'b': 22} B = {'c': 48, 'd': 13} #update() 把字典B的键/值对更新到A里 A.update(B) print(A) #二.适用多种场合,多字典存在相同key需要合并相加的场景比较适用. def sum_dict(a,b): temp = dict() # python3,dict_keys类似set: | 并集 for key

  • 浅析ES6的八进制与二进制整数字面量

    前言 在几年前,当SpiderMonkey实现了严格模式的时候.我了解到,严格模式禁用了八进制整数字面量的写法.因为有证据表明,一些新手会利用前导0来对齐多行中的数字,从而导致意想不到的结果: var sum = 015 + // 相当于十进制的13,而不是15 197 + 001; // 反正是1 console.log(sum) // 相加得到的和是211,而不是新手认为的213 但是仍有一些开发者们需要八进制整数(尤其是那些Mozilla扩展开发者和node.js开发者),最常见的就是用在

  • 怎样给PHP源代码加密?PHP二进制加密与解密的解决办法

    分享2种PHP的源码加密方式,此加密方法支持任意PHP版. 注意,加密后的PHP代码无需第三方工具解密,像往常一样,直接运行即可. 复制代码 代码如下: <?php   function encode_file_contents($filename) {       $type=strtolower(substr(strrchr($filename,'.'),1));       if ('php' == $type && is_file($filename) &&

随机推荐