首页 > 学院 > 开发设计 > 正文

位运算之判断二的正整数幂

2019-11-06 08:36:12
字体:
来源:转载
供稿:网友
给定整数 n 判断 n是否为 2的正整数幂表达式:(! (n & (n-1)) && n举个例子: n = 16 = 10000,n-1 = 15 = 1111那么 :10000 & 01111 = 00000 = 0 再举个例子: n = 256 = 10000000 ,n-1 = 255 = 11111111那么:100000000 & 011111111 = 000000000 = 0是的,如果一个数 n 是2 的正整数幂,那么n 的二进制必定为 1000.... n-1的二进制必定为 1111.... 即: n & n-1 = 0 所以 (! (n & (n-1)) 为 1 ; && n :判断 n为正数

代码如下

#include <stdio.h>int main(){ int n; while(~scanf("%d",&n)){ if(!(n & (n-1)) && n) PRintf("%d为2的正整数幂/n",n); else printf("%d不是2的正整数幂/n",n); } return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表