您好,欢迎来到外链网!
当前位置:外链网 » 站长资讯 » 专业问答 » 文章详细 订阅RssFeed

2的幂次方列表,2的三次方的幂

来源:互联网 浏览:55次 时间:2023-04-08
2 的幂次方

问题描述:判断一个整数 n 是否为 2 的幂次方?

对于这道题,常规操作是不断着把这个数除以 2,然后判断是否有余数,直到 n 被整除成 1 。

我们可以把 n 拆成二进制看待处理的,如果 n 是 2 的幂次方的话,那么 n 的二进制数的最高位是 1,后面的都是 0,例如对于 16 这个数,它的二进制表示为 10000。

如果我们把它减 1,则会导致最高位变成 0,其余全部变成 1,例如 10000 - 1 = 01111。

然后我们把 n 和 (n - 1)进行操作,结果就会是 0,例如(假设 n 是 16)

n & (n-1) = 10000 & (10000 - 1) = 10000 & 01111 = 0

也就是说,n 如果是 2 的幂次方,则 n & (n-1) 的结果是 0,否则就不是,所以代码如下

int isPow(n){ return (n & (n - 1)) == 0;}

58544262