+ -
当前位置:首页 → 问答吧 → 您好,请问这移位算法的思想是什么:计算某char变量bit位为1的总数目。

您好,请问这移位算法的思想是什么:计算某char变量bit位为1的总数目。

时间:2011-12-17

来源:互联网

初学者,请多指教。

size_t func( char x )   /* 就这个函数 */

  x = (x & 0x55) + ((x>>1) & 0x55);
   x = (x & 0x33) + ((x>>2) & 0x33); 
  x = (x & 0x0f) + ((x>>4) & 0x0f); 
  return x;
}
#include <iostream>
using namespace std;int main()

  cout << func('a') << endl; 
  cout << func(0x00) << endl; 
  cout << func(0xFF) << endl; return 0;
}

作者: yechuanfei   发布时间: 2011-12-17

这个真的很难解释。。。。你要是说位操作有哪个不懂什么意思还可以说得通。但是这个太复杂了。说起来很长。。。。

作者: mingliang1212   发布时间: 2011-12-17

他的主要思想是,首先计算2n位和 2n+1位(n = 0,1...)将结果放在【2n,2n+1】位。

然后再计算迭代计算。。。

作者: mingliang1212   发布时间: 2011-12-17