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

    文章

    18275

    浏览量

    222163
  • 二进制
    +关注

    关注

    2

    文章

    705

    浏览量

    41250
  • C语言
    +关注

    关注

    180

    文章

    7530

    浏览量

    128717
  • 字符串
    +关注

    关注

    1

    文章

    551

    浏览量

    20123
  • 模拟器
    +关注

    关注

    2

    文章

    817

    浏览量

    42698

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

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

收藏 人收藏

    评论

    相关推荐

    次方程式编程求助

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

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

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

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

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

    计算机与第三设备通信时,常用的计算机编码

    计算机与第三设备通信时,常用的计算机编码
    发表于 07-10 13:06

    计算MOSFET 电流Id??

    公式:Id=kn(Vgs-Vth)2次方,kn怎样知道是多少?我用的管子是IRF540N的
    发表于 08-18 16:18

    口袋编程计算

    `  口袋编程计算机(PocketProgrammingComputer)致力于降低青少年学习编程门槛,提高青少年硬件动手能力。  01前言  从计算机出现以来,伴随着发展最快的是
    发表于 08-04 17:52

    请教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

    教程 | 参数例化时自动计算位宽的解决办法

    ,clogb2就会自增1,直到depth除不动为止,这个时候clogb2输出的就是这个数以2为底的对数。注意一下,该函数要求depth必须是2
    发表于 01-04 18:39

    计算机存储数据

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

    如何去实现一种基于GUIDE编程计算器设计

    如何去实现一种基于GUIDE编程计算器设计?有哪些设计步骤
    发表于 11-19 06:18

    基于Arduino的编程计算

    描述Arduino Nano 编程计算器基于Arduino的编程计算器,用于教育和娱乐。成分Arduino纳米LCD1602 16x2
    发表于 09-09 07:04

    嵌入式中位宽的计算

    转换为二进制,查一下有多少位。 很明显需要26位。 如果每次的计算都需要计算器的话,很多的时候可能不太方便。这里笔者整理出一种“看一眼就知道位宽”的技巧。 首先需要牢记2的0
    发表于 03-02 19:52

    1024是什么意思

    最近在论坛上经常看到有些人会问1024是什么意思?为此,小编也查了一下关于1024。关于1024总体来说有几个方面的意思,主要有:一个是计算机系统的
    发表于 10-26 09:56 12.3w次阅读
    <b class='flag-5'>1024</b>是什么意思

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

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