C语言小编程之判断一个数是否是2的n次方的巧妙方法
2016-03-17 22:30
288 查看
今天我来分享一个判断一个数是否是2的n次方巧妙方法:
代码如下:
在这里面,我们使用了num&(num-1)的运算。
当我们演算下会发现一个规律。
![](http://img.blog.csdn.net/20160317223041708)
在这里我么你就会发现对于一个数,n&(n-1)会一直等于0。
所以我们可以将这个方法来判断一个数是不是2的n次方。
代码如下:
#include<stdio.h> int main() { int num; scanf("%d", &num); while (num) { if (((num) & (num - 1)) == 0) printf("%d", num); break; } system("pause"); return 0; }
在这里面,我们使用了num&(num-1)的运算。
当我们演算下会发现一个规律。
在这里我么你就会发现对于一个数,n&(n-1)会一直等于0。
所以我们可以将这个方法来判断一个数是不是2的n次方。
相关文章推荐
- 合并排序
- 设计模式C++学习笔记之二(Proxy代理模式)
- c++异常详解
- 设计模式C++学习笔记之一(Strategy策略模式)
- C++ explicit关键字
- 关于c++运算符重载
- 友元函数、友元类总结
- 选择排序C++
- strlen()函数 数组长度 C C++
- C++调用数学函数
- C++实验报告3
- 后缀树的生成以及一些运用
- C++ 结构体struct的使用
- 浅谈 C++ 中的 new/delete
- C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法----细节决定成败 (sort用法)
- c++复习要点总结之三 ——构造函数
- 提防向量迭代器变成野指针
- C语言习题 矩阵元素变换
- c++插入运算符和输出运算符的重载
- 冒泡排序C++