不使用累计乘法的基础上,通过位移运算(<<)操作符实现2的n次方计算。
输入描述:多组输入,每一行输入整数n(0<=n<31)
输出描述:每组数据输出2的n次方的结果
分析:位移操作如何实现2的n次方的计算
我们知道,位移操作符移动的是数字的补码,左移规则:补码左n位抛弃,右边补n个0
例如:数字1的补码
补码 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
左移1位,数值变为2的一次方 ,即2
补码 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
左移两位,数值变成2的二次方,即4
补码 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
我们可以得到规律:向左移动几位,就是2的几次方
代码如下:
#include<stdio.h>
int main()
{
int n = 0;
while (scanf("%d", &n) != EOF)
{
printf("%d\n", 1 << n);
}
return 0;
}
执行结果: