計算2的64次方有什麼特殊技巧?

有道面試題是

2的64次方是多少?

答案:如果你不是因為坐在面試室里,手邊沒有計算器的話,應該可以很容易找到答案,即1.84467441 乘以10的19次方。

這道題是怎麼轉換的啊?我猜這個面試考察的肯定不是讓你用手按64次計算器,應該是有什麼技巧把,有誰知道嗎?


記著 lg 2 大約是 0.3,然後 2^64 = 10^(64*lg2) = 10^(64*0.3) = 10^19.2

數量級就是10^19次方,前面的係數差不多是10^0.2,大概是1.6。

精確一點兒的話,lg 2 = 0.301,這個可以算出來更準的係數1.8。。


手算只能推薦快速冪了。。

2^8 = 256,然後就可以算2^16 = (2^8)^2 = 65536,接著算2^32,再下一個就是2^64了。。


估算的話可以這樣:

2^64
=16*(2^10)^6
=16*1000^6*1.024^6
~=1.6e19*(1+6*0.024)
=1.6e9*1.144
=1.8304e19

誤差不到1%

精確算的話也不複雜其實。首先根據記憶,2^16=65536,然後平方兩次,一次五位數乘法,一次十位數乘法,計算量也不是很誇張。我還真手算了一遍,估計用了十分鐘左右。算乘法的時候有很多重複的,照抄就行。最後的加法壓力有點大,容易看串列,算錯了一位。。


來來來一起玩~學物理的阿哲教你怎麼心算到誤差小於1%!

首先咱要算2的64次方對吧?

想到2的10次方是1024…(不要想歪了)

太好了1024挺接近1000的,先估算做1000吧。所以2的60次方就是1000的6次方,也就是10的18次方。

接下來還剩2的64-60=4次方,直接就是16沒商量。乘以之前的,直接估算成1.6*10的19次方了。

但是有問題,之前把1024當作1000,引入了2.4%的誤差對不對?那就一定要修正回來。根據泰勒展開,那麼6次方後誤差就會累積變成大約6*2.5%=15%。因此還要加回去15%,所以1.6多15%就是1.84*10的19次方。

所以:2的64次方=1.84*10的19次方
哈哈誤差不到千分之3哦~

其實這裡用到的技巧就是【2的10次方約等於1000】。當然這類算次方的trick還有很多,例如日常算投資經常用的:


【72翻倍定律】
每個周期增大a%,那麼經過大概【72除以a】個周期就會翻一倍。比如某投資年化收益率是4%,那麼18年會翻倍,收益率5%的話就是14.4年翻番,7%的話差不多10年翻翻。還蠻好用的推薦給大家。覺得有收穫請幫阿哲點個贊啦~


為啥大家都在硬算呢…

這明明是一道考察程序員對常見邊界值理解的文科題啊…

也就是說,是考驗背誦能力的…

下列值基本是每個程序員都會碰到的…


8位int -128 ~ 127
8位uint 0 ~ 255
16位int -32,768 ~ 32,767
16位uint 0 ~ 65,535
32位int -2,147,483,648 ~ 2,147,483,647
32位uint 0 ~ 4,294,967,295
64位int –9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
64位uint 0 ~ 18,446,744,073,709,551,615

口試一般只會問到16位,問到64位的面試官不是沒經驗就是找你茬…


3月14日
那個啥....看看樂呵樂呵就好了,贊什麼的別點了qwqqqq受之有愧啊啊啊啊啊啊啊啊!!!!
其他答案明顯切合題意而且簡單明了啊老哥們!!!!
3月12日更新...
怎麼這麼突然多了五十個贊啊(瑟瑟發抖
好久沒在知乎答題了我就順手抖了個連機靈都算不上的小機靈呀hhhh
啊對說起來自從算完這個數之後我就背過了,現在閉著眼可以隨意報18446744073709551616
意外的收穫(???)?

原答案


剛看到這個題的時候想起來看過方糖大大的《無限房間》里寫過
16的4次冪是65536來著

瞬間感覺自己已經領先了一大步

接下來就只要把這個數的四次冪算出來就吼了啊


感覺好簡單的樣子(???????)

然後!

小學生式端正坐姿安安靜靜的劃拉了好久

的確很簡單呢.....


很多CS面試題都讓我想起了茴香豆的四種寫法。


2 ^ 64 = 16 ^ 16

10,000,000,000,000,000(16)


用二進位表達(跑


0xFFFFFFFFFFFFFFFF
需要思考么?

嗯,好吧我承認少了1,不過寫0x10000000000000000不帥嘛:)


雖然背個18446744073709551616也挺容易的,但是……

2的64次方是0x10000000000000000,有問題嗎?


背過就行,
18446744073709551616
順便告訴你:2的128次方:340282366920938463463374607431768211456

小時候無聊用草稿紙算了2頁,捨不得扔,最後背下來了


就是一個無符號長整形的最大值。
反正我不記得……
就是變相考察你的編程功底


1後面帶64個0,告訴面試官這是二進位寫法


我覺得用多項式展開算1024^6,然後乘以16就可以了。

口算1.024^6~1+0.024*6=1.144

1.15*16=1.84,這個估計不差

想算得更準確就算0.024^2項,立方項。口算24^2=576,……

不過讓我全部口算夠嗆。有個紙筆算起來不難

藉助計算器算了一下,算到0.024^2時,結果是1844224……,算到0.024^3時,是18.4466368算到0.024^4時,是1844671……

這個演算法主要是考慮了24/1024大概是百分之二,所以0.024的冪衰減很快。另外24的乘方計算顯然要計算量小很多


我覺得只要是看到過那個印度人發明象棋,要的獎勵是在棋盤填滿糧食都應該背過這個數字吧,18446744073709551616


這個問題怎麼能難倒我們Pythoner呢?

順便說一說普通人如何直觀地體會這個數字到底有多大?

讓我們用標準普通話讀一讀(為了直觀我就把最高單位定做是億了):「(一千八百四十四億六千七百四十四萬零七百三十七)億零(九百五十五萬一千六百一十六)」

再用標準地英語讀一讀:「 eighteen quintillion, four hundred fourty-six quadrillion, seven hundred fourty-four trillion, seventy-four billion, seven hundred nine million, five hundred fifty-one thousand, six hundred sixteen 」。

感覺有點大,但是到底有多大呢?打個比方:

我現在一共活了有……

6856天,也就是 6856×24×60×60= 592358400 秒大,如果我現在要擁有2^64塊人民幣,我需要每秒掙

這麼多的錢!每秒300億!!!數學真奇妙,一算嚇一跳。


大概估算數量級的話不難啊,2^10是1024,當1000算好了,那結果就是1.6*10^19,差不多了不是?不給紙幣的話我大概就只能到這水平,望有大神指教
就算用計算器,也不能按64次啊,把2平方6次?


2的10次方是1024,也就是1K

2的20次方是1048576,也就是1M

(以上兩個數是背下來的,1G我就背不下來了,我只能背出2G = 2147483648)

2的30次方是1G

2的40次方是1T

接下來的單位是P(2^50)、E(2^60)

那 2^64 = 2^4 * 2^60 = 16E

(算它幹嘛)


我估計,題主是程序員面試吧???


2的十次方大約相當於10的三次方
2的60次方相當於10的3*6 18次方
2的10次方是一k
2的20次方是一m
2的30次方是一g
2的32次方是4g


推薦閱讀:

產品經理的群面中,面試官比較喜歡哪個角色?
如何面試一個產品經理?如何判斷一個產品經理是否是一個很牛的產品經理?
職場面試「最後一問」不該問什麼?
外企面試的時候英語自我介紹該說點什麼?
面試初級職位的交易員時,有哪些好的面試題來衡量候選人的水平?

TAG:面試 | 程序員 | 數學 | 編程 | 腦筋急轉彎 |