迅雷有這么一道筆試題,編程計算2的1024次方。
所謂2的1024次方,就是有1024個2相乘,于是有些同學(xué)順手就能寫出代碼:
int main() { int reslut = 1; for(inti=0;i1024;?i++) ????{ ????????result *= 2; ????} ????printf("%d ", result); return 0; }如果你也這樣寫代碼,那簡歷上頂多能寫了解C語言,離掌握和精通還差很遠(yuǎn)。
C語言中的int類型一般占4字節(jié),4個字節(jié)就是32位二進(jìn)制,即使是無符號數(shù),能表示的最大數(shù)字也就是2的32次方減一,離2的1024次方還差很遠(yuǎn)。
所以單純的用整數(shù)來保存結(jié)果肯定不行。
一種辦法是當(dāng)作字符串來處理,模擬乘2進(jìn)位的方法。
來一個數(shù)組,數(shù)組盡量大一些,初始化成1,乘以2的結(jié)果分別是2 4 8。

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

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

最終得到的字符串來個逆序就行。
這種辦法不僅能計算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類型確實能解決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)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
處理器
+關(guān)注
關(guān)注
68文章
19899瀏覽量
235429 -
二進(jìn)制
+關(guān)注
關(guān)注
2文章
807瀏覽量
42342 -
C語言
+關(guān)注
關(guān)注
180文章
7632瀏覽量
141863 -
字符串
+關(guān)注
關(guān)注
1文章
590瀏覽量
22313 -
模擬器
+關(guān)注
關(guān)注
2文章
894瀏覽量
44455
原文標(biāo)題:計算2的1024次方
文章出處:【微信號:學(xué)益得智能硬件,微信公眾號:學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
熱點推薦
二次方程式編程求助
最近在做項目中需用到二次方程式尋優(yōu),發(fā)現(xiàn)LabView中沒有附上相應(yīng)的范例(函數(shù)->數(shù)學(xué)->最優(yōu)化->二次方程式編程),只有連線版上的幾個引腳說明,如何運用該模塊進(jìn)行編程實在是困擾
發(fā)表于 01-27 21:22
在labview中怎樣將三次方開出,正負(fù)都有
為什么,為什么,在labview中開三次方后,信號只有正的,負(fù)的怎么找不到?要怎么做才可以把信號的三次方完整的開出。。。。此時甚急,快來相助,不勝感激?。。。?!
發(fā)表于 05-12 13:40
數(shù)組更新現(xiàn)在只能計算第一次的,該如何計算之后的呢?
請教各位高手了,如圖所示,想計算出每一秒中0.135到0.165s之間30ms內(nèi)的最值,但貌似只能計算第一次的,該如何計算之后的呢
發(fā)表于 06-10 11:22
請教DSP關(guān)于8次函數(shù)的計算問題
,floa肯定t夠用。 目前采用了兩種方式實現(xiàn),第一種是調(diào)用pow(a,b)函數(shù),完成8次方到0次方的累加,是雙精度的肯定夠用,最后賦值保存成float,計算的結(jié)果正常。 第二種方式是直接根據(jù)公式直接
發(fā)表于 09-11 10:42
請問乘積超過2的32次方怎么處理?
我的程序是這樣的:accel_lim = ((long)step*decel) / (accel+decel);由于step和decel比較大,所以他們的乘積可能超過2的32次方-1,但是除以(accel+decel)后肯定是小于2
發(fā)表于 02-27 08:38
計算機(jī)存儲數(shù)據(jù)
計算機(jī)網(wǎng)計算機(jī)在存儲數(shù)據(jù)時,把2的20次方個存儲單元記作1___B絡(luò)技七段數(shù)碼管可以顯示( )個一位數(shù)。計算機(jī)網(wǎng)絡(luò)技術(shù)單元答案2020知到A
發(fā)表于 08-31 06:39
魔方超級計算機(jī)應(yīng)用環(huán)境
魔方超級計算機(jī)是基于集群概念設(shè)計的大型計算機(jī)系統(tǒng),其整體計算能力理論峰值為200T flops(1Tflops即為每秒10的12次方浮點計算
發(fā)表于 04-07 21:07
?83次下載
九次方牽手湖北廣電 建大數(shù)據(jù)應(yīng)用示范基地
九次方大數(shù)據(jù)與湖北廣電合資成立湖北大數(shù)據(jù)應(yīng)用服務(wù)及數(shù)據(jù)資產(chǎn)運營公司玖云大數(shù)據(jù)公司。公司將通過大數(shù)據(jù)應(yīng)用服務(wù)平臺建設(shè)和數(shù)據(jù)資產(chǎn)運營等途徑,助力湖北建成國內(nèi)一流的大數(shù)據(jù)應(yīng)用示范基地。 正在
發(fā)表于 12-22 10:01
?1361次閱讀
九次方大數(shù)據(jù)聯(lián)手徐州國投 共建大數(shù)據(jù)公司
2017年1月10日,九次方大數(shù)據(jù)與徐州市政府合資成立大數(shù)據(jù)公司,雙方合作打造政府大數(shù)據(jù)資產(chǎn)運營平臺,推動大數(shù)據(jù)應(yīng)用落地、助力當(dāng)?shù)卮蛟炜沙掷m(xù)發(fā)展大數(shù)據(jù)產(chǎn)業(yè)生態(tài)圈。
發(fā)表于 01-12 11:36
?1704次閱讀
改進(jìn)的四次方功率譜的調(diào)制信號載波頻率估計
要的參數(shù)之一,如果不能精確估計載波頻率,干擾信號就無法在頻域上對準(zhǔn)目標(biāo)信號。針對QPSK信號和16QAM信號,主要有基于信號四次方功率譜和基于信號循環(huán)譜的載頻估計算法?;谒?b class='flag-5'>次方功率譜的載頻估
發(fā)表于 11-09 15:25
?26次下載

我國正式具備量子計算機(jī)整機(jī)交付能力
疊加態(tài)讓量子計算實現(xiàn)了真正的并行計算。舉一個例子,量子計算可以同時處理10比特的數(shù)據(jù),也就是一下子計算完2的10
設(shè)計一個一元二次方程方程的類
設(shè)計一個一元二次方程的類,其中包括能夠反映一元二次方程的屬性與操作行為,然后再設(shè)計一個測試類,檢測類的使用情況。
2 方法
使用package語句將方程的屬性即計算
零次方機(jī)器人完成數(shù)千萬元天使輪融資
近日,零次方機(jī)器人公司宣布已完成數(shù)千萬元天使輪融資,并成功斬獲千萬級訂單,正式邁入量產(chǎn)階段。這一消息標(biāo)志著零次方機(jī)器人在人形機(jī)器人領(lǐng)域的商業(yè)化進(jìn)程取得了重要突破。
評論