這個(gè)是說(shuō) 給你一個(gè)數(shù) 找出比他大的最小的一個(gè)數(shù) 滿足二進(jìn)制中1的個(gè)數(shù)和他相同
看到了一個(gè)人寫的很強(qiáng)大的位運(yùn)算代碼
#include <stdio.h>
int main()
{
int n,x;
while(scanf("%d",&n),n)
{
x=n&-n;
printf("%d\n",n+x+(n^n+x)/x/4);
}
}
x呢 是最后一個(gè)1出現(xiàn)的
n+x 是從后往前第一個(gè)01轉(zhuǎn)化為10
n^n+x/x/4就是把所有后面的1后移了
Orz阿Orz。。。。。。