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
関連する推奨事項:
# #phpHow HTML ファイルのクラスを生成するには? php
でHTMLファイルクラスを生成する方法以上がPHP はビット演算を使用して整数の加算、減算、乗算、除算を実装し、それらをテストします (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









1 ビットは 1 バイトの 8 分の 1 に相当します。 2 進数体系では、0 または 1 がそれぞれ 1 ビット (bit) であり、ビットはデータ記憶の最小単位であり、8 ビット (bit、略して b) ごとに 1 バイト (Byte) が構成されます。バイト) = 8 ビット」。ほとんどのコンピュータ システムでは、バイトは 8 ビット (ビット) 長のデータ単位であり、文字、数字、またはその他の文字を表すためにバイトが使用されます。

この記事の Redis テスト コードは次の環境に基づいています: オペレーティング システム: MacOS 64 ビット バージョン: Redis5.0.764bit 動作モード: スタンドアロン モード Redis ビット操作 reids ビット操作は、ビット配列操作およびビットマップとも呼ばれ、4 つのコマンドを提供します。 : SETBIT、GETBIT、BITCOUNT、および BITTOP バイナリ ビット配列を操作します。まず、一連の基本的な操作例を見てみましょう SETBIT 構文: SETBITkeyoffsetvalue は: コマンド キー オフセット 0/1 setbit コマンドは、指定されたオフセットのバイナリ ビット設定値をビット配列に書き込むために使用されます。オフセットは 0 からカウントを開始し、 1 または 0 の書き込みのみが許可されます。

1バイトは8ビットに相当します。データの保存は「バイト」(Byte)単位で行われ、データ送信は主に「ビット」(ビット)単位で行われ、1ビットが0か1(つまり2進数)を表し、8ビット(ビット)ごとに0または1を表します。 ) バイトは情報の最小単位であるため、「1Byte=8bit」となります。

CentOS は、RHEL を起源とする Linux ディストリビューションであり、オープン ソース コードの規制に従ってコンパイルされています。さらに、RHEL との機能互換性が維持されており、ユーザーは著作権料を支払うことなく使用および変更できる無料のオープンソース オペレーティング システムです。では、CentOS は Linux の 32 ビットと 64 ビットを区別しますか? 詳細については、以下を参照してください。 CentOS は 32 ビットと 64 ビットを区別します! 主な違い: CentOS32 ビット システムは主に PC 用にリリースされます; CentOS64 ビット システムは主に大規模科学技術コンピューティングを目的としています; 64 ビット Linux システムは主に 64 ビット ハードウェア システムにインストールされます; 32 ビット

1 バイトは 8 ビットに相当します。 2 進数体系では、0 または 1 がそれぞれ 1 ビット (bit) であり、ビットはデータ記憶の最小単位であり、8 ビット (bit、略して b) ごとに 1 バイト (Byte) が構成されます。バイト) = 8 ビット」。ほとんどのコンピュータ システムでは、バイトは 8 ビットのデータ単位であり、文字、数字、その他の文字を表すためにバイトが使用されます。

PI COIN詳細分析:機会と課題と共存する暗号通貨であるPI COIN(π)は、2018年の誕生以来、ユニークな「モバイルマイニング」メカニズムで世界中で4700万人以上のユーザーを引き付けました。この記事では、基本的な情報、エコシステム、アプリケーションシナリオ、ピコインをめぐる論争について説明し、この物議を醸すデジタル資産を完全に理解するのに役立ちます。 PI COIN CORE情報中国語名:Pai Coin英語名:PI COIN、πコイン共通略語:π公式ウェブサイト:https://minepi.com/ Founder:Nicolas Kokkalis(Technical Head、Ph.D.、Stanford University)およびChengdiao

2025年のトップ10の仮想通貨プラットフォーム:1。ユーザーエクスペリエンスやその他の要因に最適です。

Linux C言語にはビットがあります; マイコンC言語ではビットは新しいキーワードであり、「ビット変数」を定義するためによく使用されます; C言語でビット型データを定義する方法は、 1. sbitまたはbitで定義する; 2. (構造体の) ビット フィールドを通じて定義; 3. 組み合わせたビット演算子を通じて定義。
