Heim Backend-Entwicklung PHP-Tutorial PHP nutzt Bitoperationen, um Addition, Subtraktion, Multiplikation und Division von ganzen Zahlen zu implementieren und zu testen (Codebeispiel)

PHP nutzt Bitoperationen, um Addition, Subtraktion, Multiplikation und Division von ganzen Zahlen zu implementieren und zu testen (Codebeispiel)

Aug 11, 2018 pm 04:52 PM
bit

Der Inhalt dieses Artikels befasst sich mit der Verwendung von Bitoperationen zur Implementierung von Additionen, Subtraktionen, Multiplikationen und Divisionen von ganzen Zahlen (Codebeispiele). Ich hoffe, dass dies der Fall ist Dir helfen.

<?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);
        }
    }
}
Nach dem Login kopieren

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
Nach dem Login kopieren

Verwandte Empfehlungen:

Code für einfache Interaktion zwischen PHP- und HTML-Formularen

Wie Erzeugt PHP Klassen für HTML-Dateien? So generieren Sie eine HTML-Dateiklasse in PHP

Das obige ist der detaillierte Inhalt vonPHP nutzt Bitoperationen, um Addition, Subtraktion, Multiplikation und Division von ganzen Zahlen zu implementieren und zu testen (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

1 Bit entspricht der Anzahl der Bytes 1 Bit entspricht der Anzahl der Bytes Mar 09, 2023 pm 03:11 PM

1 Bit entspricht einem Achtel eines Bytes. Im binären Zahlensystem ist jede 0 oder 1 ein Bit (Bit), und ein Bit ist die kleinste Datenspeichereinheit. Alle 8 Bits (Bit, abgekürzt als b) bilden ein Byte (Byte), also „1 Byte (; Byte) = 8 Bits“. In den meisten Computersystemen ist ein Byte eine 8 Bit lange Dateneinheit. Die meisten Computer verwenden ein Byte zur Darstellung eines Zeichens, einer Zahl oder eines anderen Zeichens.

1 Byte entspricht der Anzahl der Bits 1 Byte entspricht der Anzahl der Bits Mar 19, 2021 pm 02:52 PM

1 Byte entspricht 8 Bit. Die Datenspeicherung erfolgt in „Byte“ (Byte) als Einheit, und die Datenübertragung erfolgt meist in „Bit“ (Bit) als Einheit. Ein Bit stellt eine 0 oder 1 (also binär) dar, und alle 8 Bits (Bit). ) bilden ein Byte und sind daher die kleinste Informationseinheit;

So verwenden Sie Redis-Bit-Operationen So verwenden Sie Redis-Bit-Operationen May 26, 2023 pm 02:14 PM

Der Redis-Testcode in diesem Artikel basiert auf der folgenden Umgebung: Betriebssystem: MacOS 64-Bit-Version: Redis5.0.764bit Betriebsmodus: Standalone-Modus Redis-Bit-Operation Reids-Bit-Operation wird auch Bit-Array-Operation und Bitmap genannt. Es bietet vier Befehle : SETBIT, GETBIT, BITCOUNT und BITTOP Zum Bearbeiten binärer Bit-Arrays. Schauen wir uns zunächst eine Reihe grundlegender Operationsbeispiele an. SETBIT-Syntax: SETBITkeyoffsetvalue ist: Befehlstasten-Offset 0/1 Der Befehl setbit wird verwendet, um den binären Bit-Einstellungswert des angegebenen Offsets in das Bit-Array zu schreiben. Der Offset beginnt bei 0 und zu zählen ist nur erlaubt Schreiben 1 oder 0,

Wie kann man unter Linux überprüfen, ob das System 32-Bit oder 64-Bit ist? Wie kann man unter Linux überprüfen, ob das System 32-Bit oder 64-Bit ist? Mar 01, 2024 pm 07:34 PM

CentOS ist eine Linux-Distribution, die von RHEL stammt und nach den Regeln des Open-Source-Codes kompiliert ist. Darüber hinaus bleibt die funktionale Kompatibilität mit RHEL erhalten und es handelt sich um ein kostenloses Open-Source-Betriebssystem, das Benutzer verwenden und ändern können, ohne Urheberrechtsgebühren zu zahlen. Unterscheidet CentOS unter Linux zwischen 32-Bit und 64-Bit? Einzelheiten finden Sie weiter unten. CentOS unterscheidet zwischen 32-Bit und 64-Bit!

1 Byte entspricht der Anzahl der Bits 1 Byte entspricht der Anzahl der Bits Mar 02, 2023 pm 03:44 PM

1 Byte entspricht 8 Bits. Im binären Zahlensystem ist jede 0 oder 1 ein Bit (Bit), und ein Bit ist die kleinste Datenspeichereinheit. Alle 8 Bits (Bit, abgekürzt als b) bilden ein Byte (Byte), also „1 Byte (; Byte) = 8 Bits“. In den meisten Computersystemen ist ein Byte eine 8-Bit-Dateneinheit. Die meisten Computer verwenden ein Byte zur Darstellung eines Zeichens, einer Zahl oder eines anderen Zeichens.

Was ist PI -Münze? Wo kann ich handeln? Warum sagen einige Leute, dass es ein Betrug ist? Wie nutzen PI -Münzen? Was ist PI -Münze? Wo kann ich handeln? Warum sagen einige Leute, dass es ein Betrug ist? Wie nutzen PI -Münzen? Mar 04, 2025 am 07:33 AM

PI-Münzmünze Eingehende Analyse: PI Coin (π), eine Kryptowährung, die mit Möglichkeiten und Herausforderungen zusammenfasst, hat seit seiner Geburt im Jahr 2018 mit seinem einzigartigen "mobilen Mining" -Mechanismus mehr als 47 Millionen Benutzer weltweit angezogen. In diesem Artikel werden die grundlegenden Informationen, das Ökosystem, die Anwendungsszenarien und die Kontroverse um Picoin untersucht und Ihnen helfen, dieses kontroverse digitale Vermögenswert vollständig zu verstehen. PI -Münzkerninformationen Chinesischer Name: PAI -Münze Englisch Name: Pi Coin, π Coin Common Abkreviation: π offizielle Website: https://minpi.com/ Gründer: Nicolas Kokkalis (technischer Leiter, Ph.D., Stanford University) und Chengdiao

Top 10 Tradingplattformen der virtuellen Währung im Jahr 2025: Eine klare Wahl Top 10 Tradingplattformen der virtuellen Währung im Jahr 2025: Eine klare Wahl Feb 25, 2025 pm 12:12 PM

Top Ten Virtual Currency Trading Platform in 2025: 1. Binance; Sie am besten für Benutzererfahrungen und andere Faktoren.

Hat die Linux-C-Sprache Bits? Hat die Linux-C-Sprache Bits? Mar 28, 2023 am 10:57 AM

Die Linux-C-Sprache verfügt über ein Bit. In der C-Sprache des Mikrocontrollers ist Bit ein neues Schlüsselwort, das häufig zum Definieren von Bittypdaten in der C-Sprache verwendet wird. Definiert durch Bitfelder (in Strukturen); 3. Definiert durch kombinierte Bitoperatoren.

See all articles