二進位代碼是一種使用以 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
第三步
10 ÷ 2 = 5,餘數 0
步驟 4
5 ÷ 2 = 2,餘數 1
步驟 5
2 ÷ 2 = 1,餘數 0
第 6 步
1 ÷ 2 = 0,餘數 1
為了獲得二進位表示,我們從底部(最後一個餘數)開始,從下到上讀取餘數。
42 的產生二進位代碼是:101010
所以,十進位數42用二進位碼表示為101010。
在二進位代碼中,設定位是指被設定為 1 的二進位數字(位元)。另一方面,清除位是指被設定為 1 的值的二進位數字(位) 0。
範例
例如,二進位碼101010中,有3個置位位元(對應值為1的位置)和3個清零位元(對應值為0的位置)。
<?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
<?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 位。此過程持續進行,直到檢查完所有位元並返回最終計數。
對於遞歸方法,我們可以定義一個以整數作為輸入的遞歸函數。在函數內部,我們使用位元 AND 運算子與 1 檢查最低有效位元。如果它等於 1,我們就遞增計數器。然後,我們將數字右移 1 位,並使用更新的數字遞歸來呼叫函數。基本情況是當數字變為 0 時,此時我們返回計數器。這種方法遞歸地對設定位元進行計數,直到數字變成 0。這兩種方法都提供了一種對整數中的設定位元進行計數的方法,允許根據程式設計師的特定需求和偏好進行不同的實現選擇。
以上是PHP 程式計算整數中的設定位的詳細內容。更多資訊請關注PHP中文網其他相關文章!