php使用位元運算實現整數的加減乘除並測試(程式碼範例)
這篇文章帶給大家的內容是關於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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

熱門話題

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系統主要針對大型的科學計算; 64bitLinux系統主要安裝64bit系統上1 2]

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等等;在選擇交易所時,建議您根據自身需求和偏好,綜合考慮安全性、交易費用、用戶體驗等因素,選擇最適合您的平台。
