PHP不使用加减乘除运算符号如何实现加法

我们知道,实现加法需要使用运算符号,那么不使用运算符号怎么实现加法呢?今天小编就来介绍一下不使用加减乘除运算符实现加法的方法,有需要的可以参考一下。

PHP不使用加减乘除运算符号如何实现加法

写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。

示例:

输入: a = 1, b = 1输出: 2

登录后复制

提示:

a, b 均可能是负数或 0结果不会溢出 32 位整数

立即学习“PHP免费学习笔记(深入)”;

解题思路 1

array_sum 函数

代码

class Solution {    /**     * 递归法     * @param Integer $a     * @param Integer $b     * @return Integer     */    function add($a, $b) {        // return bcadd($a, $b); // bc 系列函数        return array_sum([$a, $b]);    }}

登录后复制

解题思路 2 – 借助位运算

这题位运算还是背下来吧,毕竟位运算这种模拟加法用法基本就这题,很容易就忘掉。。。。。

^ 亦或 —— 相当于 无进位的求和, 想象10进制下的模拟情况:(如:19 + 1 = 20;无进位求和就是 10,而非 20;因为它不管进位情况)

& 与 —— 相当于求 每位的进位数, 先看定义:1 & 1 = 1;1 & 0 = 0;0 & 0 = 0;即都为 1 的时候才为1,正好可以模拟进位数的情况,还是想象 10 进制下模拟情况:(9 + 1 = 10,如果是用 & 的思路来处理,则 9 + 1 得到的进位数为1,而不是10,所以要用 

这样公式就是:(a^b) ^ ((a&b)

代码

class Solution {    /**     * 递归法     * @param Integer $a     * @param Integer $b     * @return Integer     */    function add($a, $b) {        if ($b == 0) {            return $a;        }        return $this->add($a ^ $b, ($a & $b) 

解题思路 3 - 一位一位的计算

原理等同于位运算,只是手动位运算的实现

代码

class Solution {    /**     * 此方法暂时只支持两个正数相加     * @param Integer $a     * @param Integer $b     * @return Integer     */    function add($a, $b) {        $a = "$a";        $b = "$b";        $lenA = strlen($a);        $lenB = strlen($b);        $res = '';        $flag = 0;   // 进位标志        for ($i = $lenA - 1, $j = $lenB - 1; $i >= 0 || $j >= 0; $i--, $j--) {            // 超出的位数用 0 表示            $itemA = ($i >= 0) ? $a[$i] : 0;            $itemB = ($j >= 0) ? $b[$j] : 0;            // 求位数和            $sum = (int)$itemA + (int)$itemB + $flag;            // 是否进位            if ($sum >= 10) {                $flag = 1;  // 只可能为1                $sum = $sum - 10;            } else {                $flag = 0;            }                        $res = $sum . $res;        }        // 处理最高位进位        return $flag > 0 ? $flag . $res : $res;    }}

登录后复制

推荐学习:php视频教程

以上就是PHP不使用加减乘除运算符号如何实现加法的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2114462.html

(0)
上一篇 2025年2月24日 16:50:57
下一篇 2025年2月19日 21:33:40

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • PHP如何计算二叉树坡度

    一个树某结点的坡度就是该结点左子树的结点之和和右子树结点之和的差的绝对值。今天我们就来聊聊计算二叉树坡度的方法,有需要的可以参考参考。 给定一个二叉树,计算整个树的坡度。 一个树的节点的坡度定义即为,该节点左子树的结点之和和右子树结点之和的…

    2025年2月24日
    200
  • PHP如何判断是否为平衡二叉树

    在二叉树中,有一种叫做平衡二叉树。今天我们就来介绍一下判断该树是不是平衡二叉树的方法,有需要的小伙伴可以参考一下。 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差…

    2025年2月24日
    200
  • PHP如何计算数据流中的第K大的元素

    利用最小堆的性质,该最小堆的根结点一定是所有结点中最小的。所以,我们只需要维护k个元素大小的最小堆。只要是大于最小堆的根结点的值,就移除该根结点的值,把该值插入最小堆中。 设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K…

    2025年2月24日
    200
  • php实例化对象的方法是什么

    php实例化对象的方法:只需要使用new关键字并在后面加上一个和类名同名的方法即可,语法格式“变量名 = new 类名(参数数列表);”或“变量名 = new 类名;”。 本教程操作环境:windows7系统、PHP7.1版,DELL G3…

    2025年2月24日
    200
  • php中删除图片文件的方法是什么

    在php中,可以利用unlink()函数来删除图片文件,该函数可以删除指定的文件,函数执行成功时返回TRUE,失败时返回FALSE;语法格式“unlink(filename,context)”。 本教程操作环境:windows7系统、PHP…

    2025年2月24日
    200
  • php中return的怎么使用

    在php中,return在函数中使用,用于返回函数值和中止函数的执行;函数使用return关键字返回数据,函数遇到return关键字会立即终止执行。函数只能有一个返回值,但可以通过返回一个数组来得到返回多个值的效果。 本教程操作环境:win…

    2025年2月24日
    200
  • php获取文件后缀名的三种方法是什么

    获取方法:1、使用“array_pop(explode(‘.’,文件名))”语句;2、使用“pathinfo(文件名)[‘extension’]”语句;3、用“strrev(strchr(st…

    2025年2月24日
    200
  • php截取中文字符串乱码怎么办

    php截取中文字符串乱码的解决办法:首先创建一个PHP示例文件;然后通过“mb_strlen($str, $encoding)”方法即可解决其乱码问题。 本文操作环境:windows7系统、PHP7.1版,DELL G3电脑 php截取中文…

    2025年2月24日
    200
  • php 中文截取怎么能不乱码

    在PHP中可以通过mb_substr函数来截取中文并且不会乱码,其使用语法是“mb_substr (string $str , int $start [, int $length = NULL [, string …)”。 本文…

    2025年2月24日
    200
  • php怎么判断字符串不包含某个字符

    在PHP中可以使用strpos()函数来判断字符串中不包含另一个字符串,其实现代码是“if (strpos($a, ‘are’) !== false) {…} else {…}”。 本文操作环…

    2025年2月24日
    200

发表回复

登录后才能评论