PHP程式:統計整數中設定位的數量
什麼是二進位制程式碼?
二進位制程式碼是一種使用以2為基數的數字系統來表示資訊或資料的系統。它只使用兩個數字,通常是0和1,來表示所有值。二進位制程式碼中的每個數字稱為位(二進位制數字的縮寫)。
在二進位制程式碼中,每個數字代表2的冪。從最右邊的數字開始,2的冪從右到左遞增。例如,在8位二進位制程式碼中,最右邊的位代表2^0(1),下一個位代表2^1(2),下一個代表2^2(4),依此類推。
示例
讓我們以十進位制數42為例,將其表示為二進位制程式碼。要將42轉換為二進位制,我們連續將其除以2,並記錄餘數,直到商變為零。
以下是分步過程
步驟1
42 ÷ 2 = 21,餘數0
步驟2
21 ÷ 2 = 10,餘數1
步驟3
10 ÷ 2 = 5,餘數0
步驟4
5 ÷ 2 = 2,餘數1
步驟5
2 ÷ 2 = 1,餘數0
步驟6
1 ÷ 2 = 0,餘數1
要獲得二進位制表示,我們從底部(最後一個餘數)開始,從下到上讀取餘數。
42 的二進位制程式碼是:101010
因此,十進位制數42用二進位制程式碼表示為101010。
什麼是設定位?
在二進位制程式碼的上下文中,“設定位”是指設定為值1的二進位制數字(位)。另一方面,“清除位”是指設定為值0的二進位制數字。
示例
例如,在二進位制程式碼101010中,有三個設定位(對應於值為1的位置)和三個清除位(對應於值為0的位置)。
PHP程式:統計整數中設定位的數量

方法1:迴圈遍歷整數中的所有位
示例
<?php
// Function to get no of set
// bits in binary representation
// of positive integer n
function countSetBits($n)
{
$count = 0;
while ($n)
{
$count += $n & 1;
$n >>= 1;
}
return $count;
}
// Driver Code
$number= 12;
echo "Number of setbits in $number: " .countSetBits($number);
?>
輸出
Number of setbits in 12: 2
方法2:遞迴方法
<?php
// PHP implementation of recursive
// approach to find the number of
// set bits in binary representation
// of positive integer n
// recursive function
// to count set bits
function countSetBits($n)
{
// base case
if ($n == 0)
return 0;
else
// if last bit set
// add 1 else add 0
return ($n & 1) +
countSetBits($n >> 1);
}
// Driver code
// get value from user
$n = 123;
// function calling
echo "Number of setbits in $n are: ".countSetBits($n);
?>
輸出
Number of setbits in 123 are: 6
結論
總之,我們可以使用遞迴方法和迴圈遍歷PHP中整數的所有位來計算設定位(1)。迴圈方法涉及使用while迴圈迭代整數的每個位。我們初始化一個計數器變數,並迭代直到數字變為0。在迴圈內,我們使用按位與1進行按位與運算來檢查最低有效位。如果它等於1,我們遞增計數器。然後,我們將數字右移1位。這個過程持續到所有位都被檢查完畢,最後返回最終計數。
對於遞迴方法,我們可以定義一個遞迴函式,該函式以整數作為輸入。在函式內部,我們使用按位與運算子與1進行按位與運算來檢查最低有效位。如果它等於1,我們遞增計數器。然後,我們將數字右移1位,並使用更新後的數字遞迴呼叫該函式。基本情況是當數字變為0時,此時我們返回計數器。這種方法遞迴地計算設定位,直到數字變為0。這兩種方法都提供了一種計算整數中設定位的方法,允許根據程式設計師的特定需求和偏好選擇不同的實現方式。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP