正如stackoverflow.com/questions/3232534/question-about-leading-zeros。
從黑客的喜悅尾隨零,二進制搜索次數:
#include <iostream>
using namespace std;
int ntz(unsigned x){
int n;
if (x==0) return 32;
n=1;
if ((x & 0x0000FFFF))==0) {n=n+16; x=x>>16;}
if ((x & 0x000000ff)==0) {n=n+8;x>>=8;}
if (x &0x0000000F)==0) {n=n+4; x>>=4;}
if ((x & 0x00000003)==0) { n=n+2; x>>=2;}
return n-(x &1);
}
int main(){
unsigned x;
cin>>x;
cout<<ntz(x)<<endl;
return 0;
}
當我進入8使其返回8,當我進入9相同的結果,爲什麼?
無法解釋 - 張貼當你發佈的代碼有語法錯誤(你應該使用拷貝正膏),當它以直截了當的方式得到預期產出時。 – 2010-07-12 22:30:49