gmp_setbit

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_setbit设置位

描述

gmp_setbit(GMP $num, int $index, bool $value = true): void

num 中设置位 index

参数

num

一个 GMP 对象。

index

要设置的位的索引。索引 0 代表最低有效位。

value

如果要设置位(设置为 1/打开),则为真;如果要清除位(设置为 0/关闭),则为假。

返回值

一个 GMP 对象。

示例

示例 #1 gmp_setbit() 示例 - 0 索引

<?php
$a
= gmp_init("2"); //
echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
gmp_setbit($a, 0); // 0b10 现在变为 0b11
echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
?>

上面的示例将输出

2 -> 0b10
3 -> 0b11

示例 #2 gmp_setbit() 示例 - 1 索引

<?php
$a
= gmp_init("0xfd");
echo
gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
gmp_setbit($a, 1); // 索引从 0 开始
echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
?>

上面的示例将输出

253 -> 0b11111101
255 -> 0b11111111

示例 #3 gmp_setbit() 示例 - 清除位

<?php
$a
= gmp_init("0xff");
echo
gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
gmp_setbit($a, 0, false); // 清除索引 0 的位
echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
?>

上面的示例将输出

255 -> 0b11111111
254 -> 0b11111110

注释

注意:

与大多数其他 GMP 函数不同,gmp_setbit() 必须使用已存在的 GMP 对象(例如使用 gmp_init())调用。不会自动创建对象。

参见

添加注释

用户贡献的注释 1 个注释

bluej100@gmail
17 年前
第三个参数的命名有点令人困惑;它可能更好地描述为 "$set_state"。如果为真,则将位设置为 1。如果为假,则将位设置为 0。默认值为真。

<?php
$num
= gmp_init(1);
gmp_setbit($num, 1);
echo
'gmp_setbit(1, 1): '.gmp_strval($num, 2)."\n"; // 11

$num = gmp_init(1);
gmp_setbit($num, 1, true);
echo
'gmp_setbit(1, 1, true): '.gmp_strval($num, 2)."\n"; // 11

$num = gmp_init(1);
gmp_setbit($num, 0, false);
echo
'gmp_setbit(1, 0, false): '.gmp_strval($num, 2)."\n"; // 0
?>
To Top