這篇文章帶給大家的內容是關於php使用位元運算實現整數的加減乘除並測試(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
<?php /** * Created by PhpStorm. * User: Mch * Date: 8/10/18 * Time: 23:51 * 只用位运算不用算数运算实现整数的 + - * / */ class Arithmetic { const MAX_INTEGER = 2147483647; const MIN_INTEGER = -2147483648; /** * @param int $a * @param int $b * @return int $a + $b; */ public static function add(int $a, int $b) : int { $sum = $a; while ($b) { $sum = $a ^ $b; // 不考虑进位 $b = ($a & $b) << 1; // 只考虑进位 $a = $sum; } return $sum; } /** * 相反数 <= 二进制表达取反+1(补码) * @param int $n * @return int */ private static function negateNumber(int $n) : int { return self::add(~$n, 1); } /** * a-b = a + (-b) * @param int $a * @param int $b * @return int */ public static function minus(int $a, int $b) : int { return self::add($a, self::negateNumber($b)); } /** * @param int $a * @param int $b * @return int $a * $b */ public static function multiple(int $a, int $b) : int { $res = 0; while ($b) { if (($b & 1)) { $res = self::add($res, $a); } $a <<= 1; $b >>= 1; } return $res; } private static function isNegative(int $n) : bool { return $n < 0; } /** * a/b a = MIN_INTEGER, b!=MIN_INTEGER ? * @param int $a * @param int $b * @return int */ private static function p(int $a, int $b) : int { $x = self::isNegative($a) ? self::negateNumber($a) : $a; $y = self::isNegative($b) ? self::negateNumber($b) : $b; $res = 0; for ($i = 31; $i >-1; $i = self::minus($i, 1)) { if (($x >> $i)>=$y) { $res |= (1 << $i); $x = self::minus($x, $y<<$i); } } return self::isNegative($a) ^ self::isNegative($b) ? self::negateNumber($res):$res; } /** * @param int $a * @param int $b * @return int $a / $b */ public static function pide(int $a, int $b) : int { if ($b === 0) { throw new RuntimeException("pisor is 0"); } if ($a === self::MIN_INTEGER && $b === self::MIN_INTEGER) { return 1; } else if ($b === self::MIN_INTEGER) { return 0; } else if ($a === self::MIN_INTEGER) { $res = self::p(self::add($a, 1), $b); return self::add($res, self::p(self::minus($a, self::multiple($res, $b)), $b)); } else { return self::p($a, $b); } } }
TEST:
echo Arithmetic::add(1, 2).PHP_EOL; // 3 echo Arithmetic::minus(10, 3).PHP_EOL; // 7 echo Arithmetic::multiple(5, 3).PHP_EOL; // 15 echo Arithmetic::pide(-2147483648, 1).PHP_EOL; // -2147483648 echo Arithmetic::pide(-15, 3).PHP_EOL; // -5
相關推薦:
php如何產生HTML檔案的類別? php產生html檔案類別的方法
以上是php使用位元運算實現整數的加減乘除並測試(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

1bit等于八分之一个字节。二进制数系统中,每个0或1就是一个位(bit),位是数据存储的最小单位;每8个位(bit,简写为b)组成一个字节(Byte),因此“1字节(Byte)=8位(bit)”。在多数的计算机系统中,一个字节是一个8位(bit)长的数据单位,大多数的计算机用一个字节表示一个字符、数字或其他字符。

本文redis试验代码基于如下环境:操作系统:MacOS64位版本:Redis5.0.764bit运行模式:standalonemoderedis位操作reids位操作也叫位数组操作、bitmap,它提供了SETBIT、GETBIT、BITCOUNT、BITTOP四个命令用于操作二进制位数组。先来看一波基本操作示例SETBIT语法:SETBITkeyoffsetvalue即:命令key偏移量0/1setbit命令用于写入位数组指定偏移量的二进制位设置值,偏移量从0开始计数,且只允许写入1或者0,

1byte等于8bit。数据存储是以“字节”(Byte)为单位,数据传输大多是以“位”(bit)为单位,一个位就代表一个0或1(即二进制),每8个位(bit)组成一个字节(Byte),是最小一级的信息单位;因而,“1Byte=8bit”。

CentOS是Linux的一种发行版,起源于RHEL,并按照开放源代码的规定释出源码进行编译。而且它与RHEL在功能上保持兼容性,是一个免费、开源的操作系统,用户可以在不支付版权费用的情况下使用并进行修改。那么Linux中CentOS区分32和64位吗?具体请看下文。 CentOS区分32位和64位! 主要区别: CentOS32bit系统主要针对PC而发布的; CentOS64bit系统主要针对大型的科学计算; 64bitLinux系统主要安装64bit硬件系统上; 32bit

1字节等于8位(bit)。二进制数系统中,每个0或1就是一个位(bit),位是数据存储的最小单位;每8个位(bit,简写为b)组成一个字节(Byte),因此“1字节(Byte)=8位(bit)”。在多数的计算机系统中,一个字节是一个8位长的数据单位,大多数的计算机用一个字节表示一个字符、数字或其他字符。

Pi币深度解析:机遇与挑战并存的加密货币Pi币(π),这款备受关注的加密货币,自2018年诞生以来,便以其独特的“手机挖矿”机制吸引了全球超过4700万用户。本文将深入探讨Pi币的基本信息、生态系统、应用场景以及围绕其产生的争议,帮助您全面了解这款备受争议的数字资产。Pi币核心信息中文名称:派币英文名称:Pi币、π币常用缩写:π官网:https://minepi.com/创始人:NicolasKokkalis(技术负责人,斯坦福大学博士)和Chengdiao

Linux C语言有bit;在单片机C语言中,bit是新增的一个关键词,常用来定义一个“位变量” ;C语言定义bit型数据的方法是:1、通过sbit或者bit定义;2、通过位域(结构体中)定义;3、通过组合位运算符定义。

2025年十大虚拟货币交易平台:1、币安;2、OKX;3、gateio;4、bitget等等;在选择交易所时,建议您根据自身需求和偏好,综合考虑安全性、交易费用、用户体验等因素,选择最适合您的平台。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

WebStorm Mac版
好用的JavaScript開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。