0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何计算编程计算2的1024次方呢?

学益得智能硬件 来源:学益得智能硬件 2023-08-14 11:06 次阅读

迅雷有这么一道笔试题,编程计算2的1024次方。

所谓2的1024次方,就是有1024个2相乘,于是有些同学顺手就能写出代码:

int main()
{
    int reslut = 1;
for(inti=0;i< 1024; i++)
    {
        result *= 2;
    }
    printf("%d
", result);
    return 0;
}
如果你也这样写代码,那简历上顶多能写了解C语言,离掌握和精通还差很远。

C语言中的int类型一般占4字节,4个字节就是32位二进制,即使是无符号数,能表示的最大数字也就是2的32次方减一,离2的1024次方还差很远。

所以单纯的用整数来保存结果肯定不行。

一种办法是当作字符串来处理,模拟乘2进位的方法。

来一个数组,数组尽量大一些,初始化成1,乘以2的结果分别是2 4 8。

a8d6669c-39b8-11ee-9e74-dac502259ad0.png  

再乘以2的时候,结果是6并且向后进一位。

a9032380-39b8-11ee-9e74-dac502259ad0.png  

再比如64,4乘以2等于8,不用进位,6乘以2等于2,向后进一位。

a935685e-39b8-11ee-9e74-dac502259ad0.png  

最终得到的字符串来个逆序就行。

这种办法不仅能计算2的1024次方,再大一些,问题也不大。

代码直接贴上,需要的话可以暂停下看看。
#include
#include 


void reverse(char *r) 
{
    int length = strlen(r);
    int i;
    char ch; 
    for (i = 0; i < length / 2; i++)
    {   
        ch = r[i];
        r[i] = r[length - 1 - i]; 
        r[length - 1 - i] = ch; 
    }   
}


void NPowerOfTwo(int n, char *res)
{
    int i, length, j, num, carry;
    for (i = 0; i < n; i++)
    {
        carry = 0;
        for (j = 0; j < strlen(res); j++)
        {
            num = res[j] - '0';
            num = (num << 1) + carry;
            carry = num / 10;
            res[j] = num % 10 + '0';
        }   
        if (carry > 0)
            res[j] = carry + '0';
    }       


    reverse(res);
}   


int main( )
{
    int n;
charresult[2048]={'1'};


NPowerOfTwo(1024,result);


    printf("%s
", result);


    return 0;
}
在牛客的排行榜上,速度最快,占用空间最小的并不是这种解法。

int类型虽然不好表示这么大的数,但是C语言中还有一种long double类型,具体的长度不同的编译器可能略有不同,10字节、12字节、16字节都有。

我用的Ubuntu环境,long double类型确实能解决2的1024次方。
int main()
{
long double reslut=1.0;
    for (int i = 0; i < 1024; i++)
    {
        result *= 2.0;
    }
    printf("%.0Lf
", result);
    return 0;
}





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19265

    浏览量

    229667
  • 二进制
    +关注

    关注

    2

    文章

    795

    浏览量

    41643
  • C语言
    +关注

    关注

    180

    文章

    7604

    浏览量

    136710
  • 字符串
    +关注

    关注

    1

    文章

    578

    浏览量

    20508
  • 模拟器
    +关注

    关注

    2

    文章

    875

    浏览量

    43209

原文标题:计算2的1024次方

文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    次方程式编程求助

    最近在做项目中需用到二次方程式寻优,发现LabView中没有附上相应的范例(函数->数学->最优化->二次方程式编程),只有连线版上的几个引脚说明,如何运用该模块进行编程实在是困扰
    发表于 01-27 21:22

    在labview中怎样将三次方开出,正负都有

    为什么,为什么,在labview中开三次方后,信号只有正的,负的怎么找不到?要怎么做才可以把信号的三次方完整的开出。。。。此时甚急,快来相助,不胜感激!!!!!
    发表于 05-12 13:40

    数组更新现在只能计算第一的,该如何计算之后的

    请教各位高手了,如图所示,想计算出每一秒中0.135到0.165s之间30ms内的最值,但貌似只能计算第一的,该如何计算之后的
    发表于 06-10 11:22

    请教DSP关于8函数的计算问题

    ,floa肯定t够用。 目前采用了两种方式实现,第一种是调用pow(a,b)函数,完成8次方到0次方的累加,是双精度的肯定够用,最后赋值保存成float,计算的结果正常。 第二种方式是直接根据公式直接
    发表于 09-11 10:42

    请问乘积超过2的32次方怎么处理?

    我的程序是这样的:accel_lim = ((long)step*decel) / (accel+decel);由于step和decel比较大,所以他们的乘积可能超过2的32次方-1,但是除以(accel+decel)后肯定是小于2
    发表于 02-27 08:38

    计算机存储数据

    计算机网计算机在存储数据时,把2的20次方个存储单元记作1___B络技七段数码管可以显示( )个一位数。计算机网络技术单元答案2020知到A
    发表于 08-31 06:39

    如何用C程序解一元三次方程根

    摘要:本文介绍了高等数学的近似计算方法中切线法和二分法的思想,再利用其思想结合C程序设计语言,编写出了求一元三次方程根的程序,该程序稍加修改,即可成为求更高次方
    发表于 06-21 09:19 61次下载

    魔方超级计算机应用环境

    魔方超级计算机是基于集群概念设计的大型计算机系统,其整体计算能力理论峰值为200T flops(1Tflops即为每秒10的12次方浮点计算
    发表于 04-07 21:07 83次下载

    次方牵手湖北广电 建大数据应用示范基地

    次方大数据与湖北广电合资成立湖北大数据应用服务及数据资产运营公司玖云大数据公司。公司将通过大数据应用服务平台建设和数据资产运营等途径,助力湖北建成国内一流的大数据应用示范基地。 正在
    发表于 12-22 10:01 1250次阅读

    次方大数据联手徐州国投 共建大数据公司

    2017年1月10日,九次方大数据与徐州市政府合资成立大数据公司,双方合作打造政府大数据资产运营平台,推动大数据应用落地、助力当地打造可持续发展大数据产业生态圈。
    发表于 01-12 11:36 1563次阅读

    改进的四次方功率谱的调制信号载波频率估计

    要的参数之一,如果不能精确估计载波频率,干扰信号就无法在频域上对准目标信号。针对QPSK信号和16QAM信号,主要有基于信号四次方功率谱和基于信号循环谱的载频估计算法。基于四次方功率谱的载频估
    发表于 11-09 15:25 26次下载
    改进的四<b class='flag-5'>次方</b>功率谱的调制信号载波频率估计

    PLC和运动控制器如何通过一条5次方曲线

    研究了在PLC或运动控制器在微多轴同步运动时,如何通过一条5次方曲线,将从轴的位置运动更光滑平顺。
    发表于 12-11 13:42 26次下载
    PLC和运动控制器如何通过一条5<b class='flag-5'>次方</b>曲线

    科学计算器怎么算n次方_科学计算器的度分秒怎么按

    很多小伙伴们再问计算器怎么算n次方,今天就来跟大家说一说。
    发表于 05-21 14:41 4.7w次阅读

    我国正式具备量子计算机整机交付能力

    叠加态让量子计算实现了真正的并行计算。举一个例子,量子计算可以同时处理10比特的数据,也就是一下子计算2的10
    的头像 发表于 02-02 15:12 1214次阅读

    设计一个一元二次方程方程的类

    设计一个一元二次方程的类,其中包括能够反映一元二次方程的属性与操作行为,然后再设计一个测试类,检测类的使用情况。 2 方法 使用package语句将方程的属性即计算
    的头像 发表于 02-24 10:25 809次阅读