//推断一个数是否为2的n次方 #include <stdio.h> int is_two_n(int num) { if ((num&(num - 1))) //去掉一个1,推断是否为0 return -1; return 1; } int main() { int a; printf("请输入数字:"); scanf_s("%d",&a); if (is_two_n(a)==1) printf("该数是2的次方\n"); els...
// 推断一个数是不是2的n次方 #include <stdio.h> void judge_n(int a) { int b = a - 1; if ((a & b) == 0) { printf("是2的n次方\n"); return; } else { printf("不是2的n次方\n"); return; } } int main() { judge_n(2); judge_n(3); judge_n(4); return 0; }...
将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0; 因此问题可以转化为判断1后面是否跟了n个0就可以了。 如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1;因此将原来的数与去减去1后的数字进行与运算后会发现为零。 最快速的方法: (...
输出结果:最后,用printf函数输出sum,这就是2的n次方的结果。 代码实现 下面是用for循环实现的代码:```c #includeint main() { int n; // 定义循环次数变量 int sum = 1; // 定义结果变量,初始值为1 scanf("%d", &n); // 读取用户输入的n for (int i = 0; i < n; i++) { // 循环n次...
实际上很简单,如果一个数是2的n次方的话,二进制表示最高位一定是1,其它位是0,如对于数值x=16,其二进制表示为“10000”,则x-1=15,其二进制表示为“01111”,所以x与x-1位与运算为0,而对于不是2的n次方表示的数值,则不满足这个特点,根据这个思路,可写下面的函数进行判断一个数是否为2的n次方:...
C语言求2的n次幂。简介 #include <stdio.h>#include<math.h>int main(){ int n; unsigned long long sum; printf("请输入要计算的N此方:"); scanf("%d",& 正文 1 #include <stdio.h>#include<math.h>int main(){ int n; unsigned long ...
1 新建一个2的N次方项目,如图所示:2 添加一个 2的N次方.c 文件,如图所示:3 包含需要用到的各种头文件,如图所示:4 输入main函数,如图所示:5 定义三个int变量,如图所示:6 使用scanf函数接受任意次方,如图所示:7 使用for循环语句计算出2的N次方等于多少,如图所示:8 运行程序,查看结果,如图所示:9...
C语言有函数,需要头文件#include <math.h> 用pow(2,n)就可以表示2的n次方。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了...
//写一个代码,判断n是否是2的次方数//if(n&(n-1))==0/*2的0次方是1---二进制12的1次方是2---二进制102的2次方是4---二进制1002的一次方-1是1---二进制是12的二次方-1是3---二进制是112的三次方-1是7---二进制是111n与n-1 按位与后&是0就是0,两个1才是1所以if(n&(n-1))=...
直接用移位运算符<<就行了。左移一位表示乘以2,左移两位就表示乘以4也就是2×2,……,左移n位就表示乘以2的n次方,也就是2×2×……×2,,(,n个2.)。C++中2^n=2*2*2 *2(n个2相乘),所以可以选择循环结构书写此程序。式子中的n输入来确定。include<iostream> using name...