语句实现x是否为2若干次幂判断
# is2*n(x) ((x & (x - 1))? 0 : 1)
(void)
{
m = 512;
cout << ((m & (m - 1)) ? false : true) << endl;
//即当m中只有位为1时才为若干次幂值
//若有两个及以上1则(m & (m - 1))不为0输出0表示不为2若干次幂
(0);
}
类比:x为2若干次幂即表示x中1位数为1题目转化为求个32位数中1位数如果为1则表示该数为2若干次幂
同理也可以利用此规则求个32位数中1位数 (m & (m - 1)每次可用消除个1计算次数即为1个数
最新评论