如何判断一个正整数数x是否为2的幂

来源:互联网 发布:桌面日历记事本软件 编辑:程序博客网 时间:2024/05/16 14:45

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。

0 0
原创粉丝点击