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。
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。