我試圖找出2個給定數字之間重疊1位的數量。查找重疊1位的計數
例如,給定5
和6
:
5 // 101
6 // 110
有1個重疊的1位(第一位)
我有以下代碼
#include <iostream>
using namespace std;
int main() {
int a,b;
int count = 0;
cin >> a >> b;
while (a & b != 0) {
count++;
a >>= 1;
b >>= 1;
}
cout << count << endl;
return 0;
}
但是,當我進入335
和123
它返回7
,但我認爲這是不正確的
有人可以看到我的代碼有問題嗎?
335 in binary = 101001111; 123在二進制= 001111011.看起來像4給我。 – 2010-07-13 21:01:00
你的算法不正確 - 你只需要和這兩個值,然後對結果進行總體計數。 – 2010-07-13 21:28:18
我認爲值得指出的是,這個問題本質上是要求如何計算'hammingWeight(a&b)'。有一些很好的答案如何計算海明重量在這裏:http://stackoverflow.com/questions/109023/how-to-count-the-number-of-set-bits-in-a-32-bit-integer – msandiford 2013-04-21 01:21:39