我寫了一些代碼,需要計算一個數字大小爲10^19的設置位數。我使用C++,我用unsigned long long int來存儲數字。我爲它寫了兩個版本,一個使用bitset,一個沒有它。上述棘手的bitset應用程序,在輸出中的錯誤
unsigned long long int b;
cin>>b;
int cnt=0;
while(b){
if(b&1)cnt++;
b>>=1;
}
的代碼給出正確results.However使用位集下面的代碼會產生不正確results.Though似乎它應以完全相同的方式工作。
unsigned long long int b;
cin>>b;
bitset<64>foo(b);
int cnt=foo.count();
注意,無符號長long int類型將適合在64位,10^19 < 2^64.Some額外的細節:所以這個問題文本犯規變得醜陋,我加入了完整的代碼作爲ideone鏈路,音符線51〜57 http://ideone.com/4Yamhz
你有一個輸入數字,可以複製這個問題? – juanchopanza
這就是問題,我沒有它。 :( – user3115183
然後沒有問題 – juanchopanza