gmp_setbit()
(PHP 4 >= 4.0.4, PHP 5, PHP 7)
Set bit
说明
gmp_setbit(GMP$a,int $index[,bool $bit_on= TRUE]): voidSets bit$indexin$a.
参数
- $a
The value to modify.
可以是一个 GMP数据resouce,或一个可以转换为数值的字符串。
- $index
The index of the bit to set. Index 0 represents the least significant bit.
- $bit_on
True to set the bit(set it to 1/on); false to clear the bit(set it to 0/off).
返回值
GMP 数值资源.
范例
gmp_setbit() example - 0 index
<?php
$a = gmp_init("2"); //
echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
gmp_setbit($a, 0); // 0b10 now becomes 0b11
echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
?>
以上例程会输出:
2 -> 0b10 3 -> 0b11
gmp_setbit() example - 1 index
<?php
$a = gmp_init("0xfd");
echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
gmp_setbit($a, 1); // index starts at 0
echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
?>
以上例程会输出:
253 -> 0b11111101 255 -> 0b11111111
gmp_setbit() example - clearing a bit
<?php
$a = gmp_init("0xff");
echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
gmp_setbit($a, 0, false); // clear bit at index 0
echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
?>
以上例程会输出:
255 -> 0b11111111 254 -> 0b11111110
注释
Note:Unlike most of the other GMP functions,gmp_setbit() must be called with a GMP resource that already exists(using gmp_init() for example). One will not be automatically created.
参见
gmp_clrbit()Clear bitgmp_testbit()Tests if a bit is set
The third parameter is somewhat confusingly named; it would probably be better described as "$set_state". If true, it sets the bit to 1. If false, it sets the bit to 0. Default is true. <?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 ?>
