如何用C语言实现2的n次方

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用C语言实现2的n次方相关的知识,希望对你有一定的参考价值。

参考技术A 以上各位都对,但有更简单的
直接将1左移n位就好了,效率也更高
int n= 10;
unsigned int x = 1<<n;
但要注意直接计算2的n次方很容易溢出,比如直接左移以及直接乘都要求小于32次方,还得是x声明为unsigned的前提下,否则最多能左移16位,超过之后就溢出了
如果要实现超过32次方,需要定义为更大的数据类型,或者直接用字符数组存储,实现大整数的运算
参考技术B 主要for循环。
double power2(int n)//求2的n次方的函数,参数n是指数

double result;//结果变量
for(;n>0;n--)//统计n个2相乘

result *=2;

return result;

看来前两个的回答,个人感觉返回类型是double比较好,因为求幂的结果有可能会比较大。而int型的数,最大值才3万多,容易溢出。
参考技术C 这个可以用
int mi(int n)

int r = 1;
for(int i=1;i<=n;i++)
r *= 2;

return r;

void main()

int m;
printf("请输入n的值":);
mi(m);
printf("%d",m);

参考技术D 同意memberwin意见,用位移符号<,位移量大用窜存储。 第5个回答  2011-07-19 这个可以用
int power2(int n)

int r = 1;
for(int i=1;i<=n;i++)
r *= 2;

return r;

如何用c语言实现真值表

已通过测试,望采纳
其余楼主可参照对应真值表补充
#include <stdio.h>
main()
int a=1,b=0;
printf("a=%d\tb=%d\n",a,b);
printf("a&&b=%d\n",a&b);
printf("a||b=%d\n",a||b);
printf("!a=%d\n",!a);
printf("a||(a&&b)=%d\n",a||(a&&b));
printf("a&&(a||b)=%d\n",a&&(a||b));
参考技术A 取一个数字的个位,可以分为取整数的个位,和浮点数的个位两种情况:
1)取一个整数的个位,可以直接求余
例如 变量 int num=127;
num%10 就可以得到个位的7
2)取浮点数的个位
因为%是不能对浮点数直接运算的,因此需要强制取整之后执行
例如变量 double num=27.83;
((int)num)%10 就可以得到个位的7

以上是关于如何用C语言实现2的n次方的主要内容,如果未能解决你的问题,请参考以下文章

如何用c语言实现真值表

请问如何用C语言实现汉字,和Unicode编码的转换?

如何用C语言实现进度条

C语言如何用C语言递归实现:依次打印数字中的每一位?

如何用C语言实现输入1个5位以内的正整数 分别输出每位数

如何用C语言求1至100所有素数的和?