在C语言中,计算次方我们拥有专门的计算函数,即“pow”;其使用格式如下所示:(注意指数运算需要头文件<math.h>
pow(x,y);
意为x的y次方。值得注意的是,pow的返回值是double类型,故在打印过程中需要注意格式。
eg:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int a = 0;
scanf("%d", &a);
printf("%lf\n", pow(2, a));
system("pause");
return 0;
}
便可得到2^a的值。
不过在二进制中,关于2^0的表示是00000001,2^1的表示是00000010,2^2的表示是00000100……
我们可以得到在二进制中对2进行次方运算本质上就是对1位不断进行左移。即2的0次方作为1位的最左边起始位,2的1次方是对1位左移1位,2的2次方是对2位左移两位……
所以在C语言中,我们可以通过移位符来进行对2的次方的运算。
代码展示如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int n = 0;
scanf("%d", &n);
printf("%d\n", 2 << (n - 1));
system("pause");
return 0;
}
注意左移的为n-1位,这是由于2本身在二进制中就位于从右往左的第二位,即2=2^1。