在 C++ 中計算將 1 加到給定數字 N 後發生變化的位數
假設我們給定一個數字,例如 num,任務是計算將 1 加到該數字後發生變化的位總數。
數字的二進位制表示是將給定數字轉換為 0 和 1 的形式,可以透過多種方法實現。其中一種方法是計算給定數字與 2 的最小公倍數,如果餘數不為 0,則將該位設定為 1,否則設定為 0。
位的加法表如下:
0 + 1 = 1 1 + 0 = 1 0 + 0 = 0 1 + 1 = 1 ( 1 bit carry)
例如
Input − num = 10 Output − count is : 1
解釋 - 10 的二進位制表示為 1010,當加 1 後,表示變為 1011。很明顯,只有一位發生了變化,因此計數為 1。
Input − num = 5 Output − count is : 2
解釋 - 5 的二進位制表示為 101,當加 1 後,表示變為 110。很明顯,兩位發生了變化,因此計數為 2
下面程式中使用的方案如下:
輸入整數型別的數字,例如 int num
宣告一個變數來儲存計數,例如 int count
再取一個變數,例如 temp,計算 num 的異或,並將其設定為 n ^ (n + 1)
在 count 變數中呼叫 __builtin_popcount(temp)。此函式用於計算給定整數二進位制表示中數字的計數。它是 GCC 編譯器的內建函式。
返回計數
列印結果。
示例
#include <iostream>
using namespace std;
// Function to find number of changed bit
int changedbit(int n){
int XOR = n ^ (n + 1);
// Count set bits in xor value
int count = __builtin_popcount(XOR);
return count;
}
int main(){
int n = 10;
cout <<"count is: " <<changedbit(n);
return 0;
}輸出
如果我們執行以上程式碼,我們將得到以下輸出:
count is: 1
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP