范例:一个整数中有多少个bits被set成1
时间:2014-07-24 10:15 来源: 我爱IT技术网 作者:山风
一个整数中有多少个bits被set成1(How Many Bits Set)演示范例:
这个问题有一个很好记的解法
此方法是在C的圣经 The C Programming Language 的一段范例程序
- #include <iostream>
- using namespace std;
- int main() {
- int val;
- unsigned int count = 0;
- cin >> val;
- while (val) {
- val &= (val - 1); // clear the least significant bit set
- count++;
- }
- cout << count << " bits set" << endl;
- return 0;
- }
val &= (val - 1)这行代码每做一次就会把最右边的bit清成0
因此用这个简单好记的方法就可以算出有多少bit被set
当然,这个方法并不是最快的方法
worst case会出现在所有bit都被set的情况
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
