0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何計(jì)算編程計(jì)算2的1024次方呢?

學(xué)益得智能硬件 ? 來源:學(xué)益得智能硬件 ? 2023-08-14 11:06 ? 次閱讀

迅雷有這么一道筆試題,編程計(jì)算2的1024次方。

所謂2的1024次方,就是有1024個(gè)2相乘,于是有些同學(xué)順手就能寫出代碼:

int main()
{
    int reslut = 1;
for(inti=0;i
如果你也這樣寫代碼,那簡歷上頂多能寫了解C語言,離掌握和精通還差很遠(yuǎn)。

C語言中的int類型一般占4字節(jié),4個(gè)字節(jié)就是32位二進(jìn)制,即使是無符號(hào)數(shù),能表示的最大數(shù)字也就是2的32次方減一,離2的1024次方還差很遠(yuǎn)。

所以單純的用整數(shù)來保存結(jié)果肯定不行。

一種辦法是當(dāng)作字符串來處理,模擬乘2進(jìn)位的方法。

來一個(gè)數(shù)組,數(shù)組盡量大一些,初始化成1,乘以2的結(jié)果分別是2 4 8。

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

再乘以2的時(shí)候,結(jié)果是6并且向后進(jìn)一位。

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

再比如64,4乘以2等于8,不用進(jìn)位,6乘以2等于2,向后進(jìn)一位。

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

最終得到的字符串來個(gè)逆序就行。

這種辦法不僅能計(jì)算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類型雖然不好表示這么大的數(shù),但是C語言中還有一種long double類型,具體的長度不同的編譯器可能略有不同,10字節(jié)、12字節(jié)、16字節(jié)都有。

我用的Ubuntu環(huán)境,long double類型確實(shí)能解決2的1024次方。
int main()
{
long double reslut=1.0;
    for (int i = 0; i < 1024; i++)
    {
        result *= 2.0;
    }
????printf("%.0Lf
",?result);
    return 0;
}





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19032

    瀏覽量

    228442
  • 二進(jìn)制
    +關(guān)注

    關(guān)注

    2

    文章

    772

    瀏覽量

    41534
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7581

    瀏覽量

    135541
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    567

    瀏覽量

    20432
  • 模擬器
    +關(guān)注

    關(guān)注

    2

    文章

    862

    瀏覽量

    43086

原文標(biāo)題:計(jì)算2的1024次方

文章出處:【微信號(hào):學(xué)益得智能硬件,微信公眾號(hào):學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    次方程式編程求助

    最近在做項(xiàng)目中需用到二次方程式尋優(yōu),發(fā)現(xiàn)LabView中沒有附上相應(yīng)的范例(函數(shù)->數(shù)學(xué)->最優(yōu)化->二次方程式編程),只有連線版上的幾個(gè)引腳說明,如何運(yùn)用該模塊進(jìn)行編程實(shí)在是困擾
    發(fā)表于 01-27 21:22

    在labview中怎樣將三次方開出,正負(fù)都有

    為什么,為什么,在labview中開三次方后,信號(hào)只有正的,負(fù)的怎么找不到?要怎么做才可以把信號(hào)的三次方完整的開出。。。。此時(shí)甚急,快來相助,不勝感激?。。。?!
    發(fā)表于 05-12 13:40

    數(shù)組更新現(xiàn)在只能計(jì)算第一的,該如何計(jì)算之后的

    請(qǐng)教各位高手了,如圖所示,想計(jì)算出每一秒中0.135到0.165s之間30ms內(nèi)的最值,但貌似只能計(jì)算第一的,該如何計(jì)算之后的
    發(fā)表于 06-10 11:22

    請(qǐng)教DSP關(guān)于8函數(shù)的計(jì)算問題

    ,floa肯定t夠用。 目前采用了兩種方式實(shí)現(xiàn),第一種是調(diào)用pow(a,b)函數(shù),完成8次方到0次方的累加,是雙精度的肯定夠用,最后賦值保存成float,計(jì)算的結(jié)果正常。 第二種方式是直接根據(jù)公式直接
    發(fā)表于 09-11 10:42

    請(qǐng)問乘積超過2的32次方怎么處理?

    我的程序是這樣的:accel_lim = ((long)step*decel) / (accel+decel);由于step和decel比較大,所以他們的乘積可能超過2的32次方-1,但是除以(accel+decel)后肯定是小于2
    發(fā)表于 02-27 08:38

    計(jì)算機(jī)存儲(chǔ)數(shù)據(jù)

    計(jì)算機(jī)網(wǎng)計(jì)算機(jī)在存儲(chǔ)數(shù)據(jù)時(shí),把2的20次方個(gè)存儲(chǔ)單元記作1___B絡(luò)技七段數(shù)碼管可以顯示( )個(gè)一位數(shù)。計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)單元答案2020知到A
    發(fā)表于 08-31 06:39

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

    摘要:本文介紹了高等數(shù)學(xué)的近似計(jì)算方法中切線法和二分法的思想,再利用其思想結(jié)合C程序設(shè)計(jì)語言,編寫出了求一元三次方程根的程序,該程序稍加修改,即可成為求更高次方
    發(fā)表于 06-21 09:19 ?61次下載

    魔方超級(jí)計(jì)算機(jī)應(yīng)用環(huán)境

    魔方超級(jí)計(jì)算機(jī)是基于集群概念設(shè)計(jì)的大型計(jì)算機(jī)系統(tǒng),其整體計(jì)算能力理論峰值為200T flops(1Tflops即為每秒10的12次方浮點(diǎn)計(jì)算
    發(fā)表于 04-07 21:07 ?83次下載

    次方牽手湖北廣電 建大數(shù)據(jù)應(yīng)用示范基地

    次方大數(shù)據(jù)與湖北廣電合資成立湖北大數(shù)據(jù)應(yīng)用服務(wù)及數(shù)據(jù)資產(chǎn)運(yùn)營公司玖云大數(shù)據(jù)公司。公司將通過大數(shù)據(jù)應(yīng)用服務(wù)平臺(tái)建設(shè)和數(shù)據(jù)資產(chǎn)運(yùn)營等途徑,助力湖北建成國內(nèi)一流的大數(shù)據(jù)應(yīng)用示范基地。 正在
    發(fā)表于 12-22 10:01 ?1227次閱讀

    次方大數(shù)據(jù)聯(lián)手徐州國投 共建大數(shù)據(jù)公司

    2017年1月10日,九次方大數(shù)據(jù)與徐州市政府合資成立大數(shù)據(jù)公司,雙方合作打造政府大數(shù)據(jù)資產(chǎn)運(yùn)營平臺(tái),推動(dòng)大數(shù)據(jù)應(yīng)用落地、助力當(dāng)?shù)卮蛟炜沙掷m(xù)發(fā)展大數(shù)據(jù)產(chǎn)業(yè)生態(tài)圈。
    發(fā)表于 01-12 11:36 ?1538次閱讀

    改進(jìn)的四次方功率譜的調(diào)制信號(hào)載波頻率估計(jì)

    要的參數(shù)之一,如果不能精確估計(jì)載波頻率,干擾信號(hào)就無法在頻域上對(duì)準(zhǔn)目標(biāo)信號(hào)。針對(duì)QPSK信號(hào)和16QAM信號(hào),主要有基于信號(hào)四次方功率譜和基于信號(hào)循環(huán)譜的載頻估計(jì)算法。基于四次方功率譜的載頻估
    發(fā)表于 11-09 15:25 ?26次下載
    改進(jìn)的四<b class='flag-5'>次方</b>功率譜的調(diào)制信號(hào)載波頻率估計(jì)

    PLC和運(yùn)動(dòng)控制器如何通過一條5次方曲線

    研究了在PLC或運(yùn)動(dòng)控制器在微多軸同步運(yùn)動(dòng)時(shí),如何通過一條5次方曲線,將從軸的位置運(yùn)動(dòng)更光滑平順。
    發(fā)表于 12-11 13:42 ?26次下載
    PLC和運(yùn)動(dòng)控制器如何通過一條5<b class='flag-5'>次方</b>曲線

    科學(xué)計(jì)算器怎么算n次方_科學(xué)計(jì)算器的度分秒怎么按

    很多小伙伴們?cè)賳?b class='flag-5'>計(jì)算器怎么算n次方,今天就來跟大家說一說。
    發(fā)表于 05-21 14:41 ?4.7w次閱讀

    我國正式具備量子計(jì)算機(jī)整機(jī)交付能力

    疊加態(tài)讓量子計(jì)算實(shí)現(xiàn)了真正的并行計(jì)算。舉一個(gè)例子,量子計(jì)算可以同時(shí)處理10比特的數(shù)據(jù),也就是一下子計(jì)算2的10
    的頭像 發(fā)表于 02-02 15:12 ?1158次閱讀

    設(shè)計(jì)一個(gè)一元二次方程方程的類

    設(shè)計(jì)一個(gè)一元二次方程的類,其中包括能夠反映一元二次方程的屬性與操作行為,然后再設(shè)計(jì)一個(gè)測(cè)試類,檢測(cè)類的使用情況。 2 方法 使用package語句將方程的屬性即計(jì)算
    的頭像 發(fā)表于 02-24 10:25 ?746次閱讀