广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP中怎么使用位运算实现加减乘除运算
  • 665
分享到

PHP中怎么使用位运算实现加减乘除运算

2023-06-20 15:06:42 665人浏览 八月长安
摘要

这篇文章主要介绍了PHP中怎么使用位运算实现加减乘除运算,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。计算机最基本的操作单元是字节,一个字节由8个位组成,一个位只能存储一个0

这篇文章主要介绍了PHP中怎么使用位运算实现加减乘除运算,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

计算机最基本的操作单元是字节,一个字节由8个位组成,一个位只能存储一个0或1。所有数据在计算机中都是采用二进制,即 1 和 0 的编码存储和运算。

这次尝试在 php 中使用位运算实现四则运算,首先介绍一些基本概念:

原码:将最高位作为符号位(0表示正,1表示负),其它数字位代表数值本身的绝对值

反码:正数反码和原码一样;如果是负数,符号位不变,其余各位取反

补码:正数补码和原码一样;负数补码为反码加 1

计算机中的数使用 补码 的形式存储

⒈ 加法

二进制中只有 0 和 1,0 + 0、0 + 1 都不需要进位,但 1 + 1 则需要进位。所以,首先通过 抑或 运算得到不需要进位的那些位相加的结果。然后进行 运算,当相加的两位都为 1 时结果为 1。所以如果与运算的结果大于 0 说明需要进位,此时将与运算的结果按位左移 1 位,此时将左移的结果与抑或运算得到的结果重新进行上述的运算过程,直到与运算的结果为 0。

<?php    function add($summand, $addend)    {        $sum = $summand ^ $addend;        //  判断进位        $carry = $summand & $addend;        while ($carry <<= 1) {            $summand = $sum;            $addend = $carry;            $sum = $summand ^ $addend;            $carry = $summand & $addend;        }        return $sum;    }

⒉ 减法

减法可以看作是减数为负数的加法,例如 2 - 1 可以看作是 2 + (-1)。

<?php    require 'addition.php';    function subtract($minuend, $subtrahend)    {        //  先求得减数的补码,然后求和        $subtrahend = add(~$subtrahend, 1);        return add($minuend, $subtrahend);    }

⒊ 乘法

乘法也可以看作是加法的变种,例如 m * n 可以看作是 n 个 m 相加的结果。但乘法使用位运算还有更快捷的实现方式。例如 3 * 10:3 的二进制表示为 0011,10 的二进制表示为 1010

0 0 1 1

×      1 0 1 0

————————————

0 0 0 0

0 0 1 1 0

0 0 0 0 0 0

0 0 1 1 0 0 0

————————————

0 0 1 1 1 1 0

由上图可以看出,乘法计算的结果为:当乘数的位的值为 1 时,将被乘数按位左移相应的位数,最后将这些按位左移后得到的结果相加及时最后的结果。

<?php    require 'addition.php';    function multiply($multiplicand, $multiplicator)    {        // 判断符号位        $flag = ($multiplicand ^ $multiplicator) < 0 ? false : true;        //  被乘数和乘数取绝对值        $multiplicand = $multiplicand < 0 ? add(~$multiplicand, 1) : $multiplicand;        $multiplicator = $multiplicator < 0 ?  add(~$multiplicator, 1) : $multiplicator;        $product = 0;        $multiplicator = decbin($multiplicator);        $length = strlen($multiplicator);        for ($i = 0; $i < $length; $i ++) {            if ($multiplicator[$i]) {                $product += $multiplicand << $length - $i - 1;            }        }        if (! $flag) {            $product = add(~$product, 1);        }        return $product;    }

⒋ 除法

同乘法类似,除法可以看作是被除数可以减去多少个除数。

<?php    require 'addition.php';    function divide($dividend, $divisor)    {        //  判断符号位        $flag = ($dividend ^ $divisor) < 0 ? false : true;        //  取得被除数符号位        $dividend_flag = $dividend < 0 ? false : true;        // 取绝对值       $dividend = $dividend < 0 ? add(~$dividend, 1) : $dividend;       $divisor = $divisor < 0 ? add(~$divisor, 1) : $divisor;       $quotient = 0;       $remainder = 0;       if ($dividend < $divisor) {           // 被除数小于除数的情况           $remainder = $dividend;           return 'quotient = ' . $quotient . ' remainder = ' . $remainder;       }       while ($dividend >= $divisor) {           $i = 0;           $mul_divisor = $divisor;           while ($dividend >= ($mul_divisor << 1)) {               $i ++;               $mul_divisor <<= 1;           }           $dividend -= $mul_divisor;           $quotient += 1 << $i;       }      $remainder = $dividend;      if (! $flag) {          $quotient = add(~ $quotient, 1);      }      if (! $dividend_flag) {          $remainder = add(~$remainder, 1);      }      return 'quotient = ' . $quotient . ' remainder = ' . $remainder;    }

以上。

需要指出的是,上面的代码在实现过成功并没有考虑数据的溢出。两个很大的数相加可能会溢出;正数减负数也可能溢出;两个大数相乘也会溢出;任何数除以 0 都会溢出。

感谢你能够认真阅读完这篇文章,希望小编分享的“PHP中怎么使用位运算实现加减乘除运算”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网PHP编程频道,更多相关知识等着你来学习!

--结束END--

本文标题: PHP中怎么使用位运算实现加减乘除运算

本文链接: https://www.lsjlt.com/news/297607.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP中怎么使用位运算实现加减乘除运算
    这篇文章主要介绍了PHP中怎么使用位运算实现加减乘除运算,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。计算机最基本的操作单元是字节,一个字节由8个位组成,一个位只能存储一个0...
    99+
    2023-06-20
  • php怎么实现加减乘除的运算
    php实现加减乘除运算的方法:1、创建一个php示例文件;2、定义两个变量为“$x”和“$y”;3、通过“$x+$y”,“$x-$y”,“$x*$y”及“$x/$y”公式实现加减乘除运算;4、使用“echo”输出运算结果即可。本教程操作系统...
    99+
    2023-05-14
    php
  • Java使用位运算实现加减乘除详解
    目录1 . 实现加法2 . 实现减法3 . 实现乘法4 . 实现除法在线OJ: LeetCode 29. 两数相除 原题目的要求是不能使用乘法, 除法和取余运算符实现除法. 在本篇博...
    99+
    2023-05-19
    Java位运算实现加减乘除 Java位运算 加减乘除 Java位运算
  • MongoDB中怎么实现加减乘除运算
    本篇文章给大家分享的是有关MongoDB中怎么实现加减乘除运算,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.$add操作符(+)1.1 语...
    99+
    2022-10-18
  • php怎么进行加减乘除运算
    PHP是一种非常流行的服务器端脚本语言,它被广泛用于Web开发。在PHP中,运算加减乘除是非常常见的操作,本文将会介绍PHP中这几种运算的使用方法。加法运算加法运算是最常见的一种运算,在PHP中使用加号(+)来表示。下面是一个简单的加法运算...
    99+
    2023-05-14
    php
  • Java怎么用位运算实现加减运算
    这篇文章主要讲解了“Java怎么用位运算实现加减运算”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java怎么用位运算实现加减运算”吧!思路分析先分析如何用位运算实现加法运算。示例假设a=2...
    99+
    2023-07-04
  • javascript如何实现加减乘除运算
    本篇内容主要讲解“javascript如何实现加减乘除运算”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript如何实现加减乘除运算”吧! ...
    99+
    2022-10-19
  • Java利用位运算实现加减乘除的方法详解
    目录前言一、常见位运算1. &运算2. |运算3. ^运算4. ~运算二、位运算实现加法三、位运算实现减法四、位运算实现乘法五、位运算实现除法前言 我们经常使用的加减乘除,我...
    99+
    2022-11-13
  • Java怎么用位运算实现乘法运算
    这篇文章主要介绍了Java怎么用位运算实现乘法运算的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java怎么用位运算实现乘法运算文章都会有所收获,下面我们一起来看看吧。十进制相乘例如,26 * 15,在进行乘法...
    99+
    2023-07-06
  • Java利用位运算实现加减运算详解
    目录前言思路分析示例位运算进位初步结果去除加号整体思路加法代码实现减法实现减法分析减法代码实现总结前言 本文主要介绍如何使用位运算来实现加减功能,也就是在整个运算过程中不能出现加减符...
    99+
    2022-12-31
    Java位运算实现加减运算 Java 加减运算 Java位运算
  • C++重载运算符实现分数加减乘除
    本文实例为大家分享了C++重载运算符实现分数加减乘除的具体代码,供大家参考,具体内容如下 实现结果如下图所示: 代码如下所示: #include <iostream>...
    99+
    2022-11-12
  • PHP如何在不使用加减乘除运算符号的情况下实现加法
    这篇文章主要讲解了“PHP如何在不使用加减乘除运算符号的情况下实现加法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP如何在不使用加减乘除运算符号的情况下实现加法”吧!写一个函数,求两个...
    99+
    2023-06-20
  • php怎么实现乘法运算
    本教程操作环境:windows10系统、PHP7.1版、DELL G3电脑php怎么实现乘法运算运算符是指通过一个或多个表达式来产生另外一个值的某些符号,如“+”、“%”、“.”等都是运算符。在表达式 2+1 中,运算符“+”有两个操作数,...
    99+
    2015-11-01
    PHP
  • Android基于反射技术实现的加减乘除运算示例
    本文实例讲述了Android基于反射技术实现的加减乘除运算。分享给大家供大家参考,具体如下: JAVA反射机制定义: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道...
    99+
    2022-06-06
    加减乘除运算 反射 示例 Android
  • C语言如何使用移位实现乘除法运算
    这篇文章主要为大家展示了“C语言如何使用移位实现乘除法运算”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言如何使用移位实现乘除法运算”这篇文章吧。移位实现乘...
    99+
    2022-10-19
  • php中加减乘除的计算公式怎么写
    这篇“php中加减乘除的计算公式怎么写”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php中加减乘除的计算公式怎么写”文章吧...
    99+
    2023-06-29
  • python中怎么利用numpy.dot实现点乘运算
    python中怎么利用numpy.dot实现点乘运算,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。说明对于两个一维数组,计算这两个数组对应下标元素的乘积和(数学...
    99+
    2023-06-20
  • 怎么用PHP实现简单的加减乘除
    这篇文章主要讲解了“怎么用PHP实现简单的加减乘除”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用PHP实现简单的加减乘除”吧!本文的重点就是如何创建一个PHP类来实现两个数间的加减乘除...
    99+
    2023-06-20
  • 怎么在python中实现矩阵乘法运算
    今天就跟大家聊聊有关怎么在python中实现矩阵乘法运算,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相...
    99+
    2023-06-14
  • 怎么在php中使用递增和递减运算符
    这期内容当中小编将会给大家带来有关怎么在php中使用递增和递减运算符,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。php的框架有哪些php的框架:1、Laravel,Laravel是一款免费并且开源的PH...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作