PHP Conference Japan 2024

gmp_testbit

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

gmp_testbit测试位是否已设置

描述

gmp_testbit(GMP|int|string $num, int $index): bool

测试指定的位是否已设置。

参数

num

一个 GMP 对象,一个 int,或者一个 string,可以解释为数字,遵循与在 gmp_init() 中使用字符串时相同的逻辑,并自动检测基数(即当 base 等于 0 时)。

index

要测试的位

返回值

如果位在 num 中已设置,则返回 true,否则返回 false

错误/异常

index 小于零时,会发出 E_WARNING 级别的错误,并返回 false

示例

示例 #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)

参见

添加注释

用户贡献的注释 1 条注释

bluej100@gmail
17 年前
gmp_testbit 对我的(超过 64 位)位掩码检查非常有用。

同时,我认为这些是最好的替代方案。

大部分已满

<?php
(gmp_scan1($a, $index) == $index)
?>

大部分为空

<?php
(gmp_scan0($a, $index) != $index)
?>

尽管如此,最坏情况下的时间复杂度仍然是 O(N)。
To Top