PHP Conference Japan 2024

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 代表最低有效位元。

設為 True 以設定位元(將其設為 1/開啟);設為 False 以清除位元(將其設為 0/關閉)。

傳回值

不傳回任何值。

範例

範例 #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」可能會更好。如果為 true,則將位元設定為 1。如果為 false,則將位元設定為 0。預設值為 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
?>
To Top