如何快速判断一个数是否为2的倍数?(正整数) 解法一:暴力解法 解法二:lowbit(x&-x) 解法三:x & (x - 1) 四、面试题 解法一:暴力解法 一个数是否为2的倍数,可分为两者情况1和非1。 1显然是2的倍数,至于其他情况我们仅需暴力模2、处2循环,一旦出现模2结果非0的情况,则表明该数不是2的倍数! bool func(int x) // x >= 0 { if (x == 0) return true; else { while (x) { if (x % 2) return false; x /= 2; } return true; } } 解法二:lowbit(x&-x) 首先,如果一个数是2的倍数,此时该数都对应的二进制只存在唯一 一个1(比如8对应1000