栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

浅谈PHP中如何使用位运算实现加减乘除运算

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力
PHP如何使用位运算实现四则运算?本篇文章给大家介绍一下在PHP中使用位运算实现四则运算(加减乘除运算)的方法。


浅谈PHP中如何使用位运算实现加减乘除运算

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

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

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

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

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

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

⒈ 加法

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

⒉ 减法

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

⒊ 乘法

乘法也可以看作是加法的变种,例如 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 时,将被乘数按位左移相应的位数,最后将这些按位左移后得到的结果相加及时最后的结果。

⒋ 除法

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

= $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中如何使用位运算实现加减乘除运算的详细内容,更多请关注考高分网其它相关文章!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/262373.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号