設定位元是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中文網其他相關文章!

C#和C 的歷史與演變各有特色,未來前景也不同。 1.C 由BjarneStroustrup在1983年發明,旨在將面向對象編程引入C語言,其演變歷程包括多次標準化,如C 11引入auto關鍵字和lambda表達式,C 20引入概念和協程,未來將專注於性能和系統級編程。 2.C#由微軟在2000年發布,結合C 和Java的優點,其演變注重簡潔性和生產力,如C#2.0引入泛型,C#5.0引入異步編程,未來將專注於開發者的生產力和雲計算。

C#和C 的学习曲线和开发者体验有显著差异。1)C#的学习曲线较平缓,适合快速开发和企业级应用。2)C 的学习曲线较陡峭,适用于高性能和低级控制的场景。

C#和C 在面向对象编程(OOP)中的实现方式和特性上有显著差异。1)C#的类定义和语法更为简洁,支持如LINQ等高级特性。2)C 提供更细粒度的控制,适用于系统编程和高性能需求。两者各有优势,选择应基于具体应用场景。

從XML轉換到C 並進行數據操作可以通過以下步驟實現:1)使用tinyxml2庫解析XML文件,2)將數據映射到C 的數據結構中,3)使用C 標準庫如std::vector進行數據操作。通過這些步驟,可以高效地處理和操作從XML轉換過來的數據。

C#使用自動垃圾回收機制,而C 採用手動內存管理。 1.C#的垃圾回收器自動管理內存,減少內存洩漏風險,但可能導致性能下降。 2.C 提供靈活的內存控制,適合需要精細管理的應用,但需謹慎處理以避免內存洩漏。

C 在現代編程中仍然具有重要相關性。 1)高性能和硬件直接操作能力使其在遊戲開發、嵌入式系統和高性能計算等領域佔據首選地位。 2)豐富的編程範式和現代特性如智能指針和模板編程增強了其靈活性和效率,儘管學習曲線陡峭,但其強大功能使其在今天的編程生態中依然重要。

C 學習者和開發者可以從StackOverflow、Reddit的r/cpp社區、Coursera和edX的課程、GitHub上的開源項目、專業諮詢服務以及CppCon等會議中獲得資源和支持。 1.StackOverflow提供技術問題的解答;2.Reddit的r/cpp社區分享最新資訊;3.Coursera和edX提供正式的C 課程;4.GitHub上的開源項目如LLVM和Boost提陞技能;5.專業諮詢服務如JetBrains和Perforce提供技術支持;6.CppCon等會議有助於職業

C#適合需要高開發效率和跨平台支持的項目,而C 適用於需要高性能和底層控制的應用。 1)C#簡化開發,提供垃圾回收和豐富類庫,適合企業級應用。 2)C 允許直接內存操作,適用於遊戲開發和高性能計算。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

SublimeText3漢化版
中文版,非常好用

Dreamweaver Mac版
視覺化網頁開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器