當您沒有 gmp 擴充功能時,另一種獲取位元計數的方法是使用位元運算。
<?php
$int = 133; // 10000101
for($count = 0; $int != 0; $count++) // 重複直到 $int 為 0(並在 $count 中計算所需的步驟數)
{
$int = $int & $int-1; // 使用位元及運算子從 $int 中移除最右邊的 1
}
echo $count; // 3
?>
這是 Kernighan 的位元計數法。
https://youtu.be/ZRNO-ewsNcQ?t=510 有一個很好的解釋說明它是如何運作的。