設定位元是0和1的二進位表示形式。這個數字1被稱為計算機中的設定位。讓我們舉一個例子來理解設定位的計算 -
讓我們舉一個例子來理解setbit計算 -
整數96的設定位元計算為
假設我們想將位元設為96的總和。所以根據上面的表示,我們將把位1設定為那些數組元素,它們的總和將為96。這樣我們將形成2組位。因此,如果我們將K值設為2,則96的設定位是它的倍數。
在這個程式中,我們將解決數組元素計數問題,其中設定位的數量是K的倍數。
我們將使用一個名為‘bits/stdc .h’的頭檔來啟動程序,該檔案包含了C 的所有標準範本庫。
我們正在建立一個名為‘find_bitcount’的函數定義,它接受三個參數,即arr、n和k,並定義如下−
arr[] − 從陣列的主函數中取得陣列輸入。
n − 陣列的長度
k - 檢查與設定的位元計數的可整除性。
這將計算數組元素中設定位的總數。
然後我們將‘0’儲存到‘ans’變數中,該變數將追蹤滿足條件的數字的計數。
我們開始for迴圈來迭代每個元素,並將陣列元素即'arr[i]'儲存到變數'x'中,該變數在後面的while循環中滿足條件以檢查總位設定計數的條件。這樣函數將‘x’初始化為陣列元素的值。
接著將變數‘setBitsCount’初始化為‘0’,它將追蹤目前陣列元素的置位位數。
接下來,我們建立一個while循環來檢查x(儲存在x中的陣列元素)是否大於0,並執行以下操作:
setBitsCount = x & 1 − 使用迴圈中的位元與運算子和1來決定x的最低有效位元是否為1。
x = x >> 1 − 如果結果為1,則設定位數增加1。然後在循環中使用 >> 運算子將 x 向右移動1位,以消除最低有效位。
現在使用if語句檢查'setBitsCount'是否能被'k'整除,使用'%'運算符,並且等於'0',那麼當前數組元素滿足條件,透過'1'遞增變數'ans '。
在處理完上述所有條件後,函數傳回‘ans’的值,定義了陣列元素的總設定位數。
繼續前進,開始主要函數並宣告所有的陣列元素。然後我們初始化變數'n'來找到陣列的大小,並初始化變數'K'為'2',它將檢查陣列元素是否為K的倍數。
最後,在列印語句中,我們呼叫了一個名為‘find_bitcount()’的函數定義,並獲得了結果。
在這個程式中,我們將實現一個陣列元素的計數,該陣列元素的設定位元是 K 的倍數。
#include <bits/stdc++.h> #include <bits/stdc++.h> using namespace std; // Function to find the count of numbers int find_bitcount(int arr[], int n, int k) { int ans = 0; for (int i = 0; i < n; i++) { int x = arr[i]; int setBitsCount = 0; // Calculate the set-bits count of the element x while (x > 0) { setBitsCount += x & 1; x = x >> 1; } // Check if the setbits count // is divisible by K if (setBitsCount % k == 0) ans++; } return ans; } int main() { int arr[] = { 6, 845, 4, 168, 7896 }; int n = sizeof(arr) / sizeof(arr[0]); int K = 2; cout << "There are "<<find_bitcount(arr, n, K)<<" array element whose setbits are in a multiple of K"; return 0; }
There are 3 array element whose setbits are in a multiple of K
我們探討了一個陣列元素計數的概念,其設定位數是K的倍數。在這個程式中,透過定義函數來計算設定位數數組元素的總計數。然後,我們觀察設定位數如何透過>>運算子進行移位,並使用條件語句來檢查有多少個陣列元素傳遞給設定位數。最後,我們簡單地列印結果。
以上是計算數組中元素的個數,其二進位表示中的1的個數是K的倍數的詳細內容。更多資訊請關注PHP中文網其他相關文章!