摘要:
还是不喜欢位运算啊。。。啊啊。。。刚在网上看到一个网友的位运算反转一个字节的帖子,贴过来学习积累啊...上代码:unsigned char reverse8( unsigned char c ){ c = ( c & 0x55 ) << 1 | ( c & 0xAA ) >> 1; c = ( c & 0x33 ) << 2 | ( c & 0xCC ) >> 2; c = ( c & 0x0F ) << 4 | ( c & 0xF0 ) >> 4; return c;}上分 阅读全文
摘要:
1、比较简单和容易理解的方法就是逐位比较法:#include <iostream> using namespace std; int findone(unsigned int n){ for(int i=0;n>0;n>>=1) i+=(n&1); return i; } int main(){ int n; cin>>n; cout<<findone(n)<<endl; return 0; }这种方法的缺点是比较费时,时间长度取决于n的位数,时间复杂度O(n)。假如上千上万位的话,每一位都要执行一遍,所用时间就很长了。 阅读全文