gmp_testbit 對我的(超過 64 位元)位元遮罩檢查非常有用。
同時,我認為這些是最佳的替代方案。
幾乎全滿
<?php
(gmp_scan1($a, $index) == $index)
?>
幾乎全空
<?php
(gmp_scan0($a, $index) != $index)
?>
不過,最糟情況下的時間複雜度仍然是 O(N)。
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
gmp_testbit — 測試位元是否已設定
num
一個 GMP 物件、一個 整數,或是一個可以被解讀為數字的 字串,其遵循的邏輯與在 gmp_init() 中使用自動基數偵測(例如當 base
等於 0 時)使用該字串相同。
索引
要測試的位元
範例 #1 gmp_testbit() 範例
<?php
$n = gmp_init("1000000");
var_dump(gmp_testbit($n, 1));
gmp_setbit($n, 1);
var_dump(gmp_testbit($n, 1));
?>
以上範例將輸出
bool(false) bool(true)
gmp_testbit 對我的(超過 64 位元)位元遮罩檢查非常有用。
同時,我認為這些是最佳的替代方案。
幾乎全滿
<?php
(gmp_scan1($a, $index) == $index)
?>
幾乎全空
<?php
(gmp_scan0($a, $index) != $index)
?>
不過,最糟情況下的時間複雜度仍然是 O(N)。