x = 2^k 当且仅当 (x&(x-1) == 0)
必要性显然。
对于充分性采用反证法。假设有不为2的幂的x也符合此条件。把x表示为2进制形式,首先因为x不为0,所以1的位数至少为1位;又因为x != 2^k,所以1的位数至少为2位;则最高位的1在x和x-1中都必然存在,故x&(x-1) != 0。
本文通过反证法详细解释了如何利用位操作判断一个整数是否为2的幂次方。必要性和充分性的论证确保了方法的严谨性。
x = 2^k 当且仅当 (x&(x-1) == 0)
必要性显然。
对于充分性采用反证法。假设有不为2的幂的x也符合此条件。把x表示为2进制形式,首先因为x不为0,所以1的位数至少为1位;又因为x != 2^k,所以1的位数至少为2位;则最高位的1在x和x-1中都必然存在,故x&(x-1) != 0。
1404

被折叠的 条评论
为什么被折叠?