今天,就來和大家簡單地聊一下,有關(guān)手機、平板、電腦的初始日期,為啥只能最早設(shè)置到1970年1月1日的事兒吧。
還記得大概一年之前,蘋果手機出過的一個Bug么?
用戶把系統(tǒng)日期調(diào)整成1970年1月1日,就會導(dǎo)致手機無限死機,重啟也不能解決問題,只能送到蘋果官方售后的天才吧(Genius Bar)尋求幫助。
蘋果解決這個bug的手段也很簡單粗暴——不讓用戶將日期設(shè)置成1970年1月1日了
無限重啟了,真是傷不起~~
其實,更好奇的寶寶們,你們有發(fā)現(xiàn)沒?其實你們應(yīng)該也注意到了,除了電子設(shè)備的系統(tǒng)日期,電腦、手機上的各種文件、文件夾的日期,也是不會比1970年1月1日更早的了。
不少買過舊手機的小白同學(xué),看到手機、電腦里有一些文件,日期是1970年1月1日的,就會懷疑人家賣給自己的,是一個古董貨。
其實沒必要這樣擔(dān)心啦,對方要是真賣給你一個1970年的古董,那都是能進博物館的級別了,這么交易,你還不虧呢~~
即使是這款舊Apple II,最早也已經(jīng)是上個世紀(jì)80年代起的產(chǎn)物了
好的,重回正題~~
要解釋這個問題,就要從計算機編程的原理開始了,大家準(zhǔn)備好了嗎?看不懂沒有關(guān)系,直接關(guān)注加粗的部分就行。
最初,CPU和配合的計算機操作系統(tǒng),都是32位,所以時間也是用32位表示。
System.out.println(Integer.MAX_VALUE);
2147483647
這個數(shù)字是不是很熟悉?沒錯,就是2的31次方-1 !
Integer 在JAVA內(nèi)用32位表示,因此32位能表示的最大值是2147483647。
另外1年365天的總秒數(shù)是 31536000,2147483647/31536000 = 68.1,也就是說32位,即2147483647秒,最多能表示的時間是68年。
最早出現(xiàn)的UNIX操作系統(tǒng),考慮到計算機產(chǎn)生的年代和應(yīng)用的時限(1968年誕生),所以綜合取了1970年1月1日作為UNIX TIME的紀(jì)元時間,而java自然也遵循了這一約束。
從1970年開始,過了68.1年,最終到了2038年01月19日03時14分07秒,便會到達(dá)32位系統(tǒng)表示的最長時間。
過了這個時間點,所有32位操作系統(tǒng)時間便會變?yōu)?0000000 00000000 00000000 00000000,算下來也就是1901年12月13日20時45分52秒,這樣便會出現(xiàn)時間回歸的現(xiàn)象,很多軟件便會運行異常了。
2000年之前的幾年,人們曾擔(dān)心“千年蟲”問題,但幸好問題都解決了
不少聰明的好奇心寶寶會說了,按剛才的表述方法,32位的時間是相當(dāng)有限的,那我們把電腦、手機的硬件系統(tǒng)和軟件系統(tǒng),一起升級到64位,或是128位,問題不就解決了么?
是的,你很聰明,計算機工程師們,也是這么想的~~
大家應(yīng)該都知道次方的威力,2的64次方能表示的數(shù),比2的32次方要高的多得多:
按照上述的規(guī)則除以2,那也是一個長達(dá)18位的超級大數(shù)字,比2147483647要大多了喲~~
感興趣的同學(xué)們,可以計算一下這個數(shù)字按秒來計,大概能表達(dá)多少年吧~~
emm……還是從1970年1月1日開始計算起,是 292,277,026,596年12月4日15時30分08秒。
嘖嘖,2億年后,你我都早已不在了,人類還會存在么~~
大家應(yīng)該聽說過iPhone 5S時代,蘋果推出的64位架構(gòu)的A7吧,后來Android陣營也逐步跟進了,現(xiàn)在基本上主流的電腦、手機,都運行的是64位的操作系統(tǒng),部分軟件,也漸漸開始添加針對64位的支持。
1970年1月1日的開始,和2038年01月19日的故事,到這里就結(jié)束了。
所謂32位、64位操作系統(tǒng)和相關(guān)硬件,是指CPU一次能處理隊列序令的能力,32位的當(dāng)然是一次性執(zhí)行32位的數(shù)據(jù),64位的當(dāng)然是一次性執(zhí)行64位的數(shù)據(jù)。
理論上來說,64位處理器的運算能力,要比32位的要強一倍,當(dāng)然還要看CPU的其他指標(biāo),這個不能一概而論。
而且除了運算能力之外,與32位處理器相比,64位處理器的優(yōu)勢還體現(xiàn)在系統(tǒng)對內(nèi)存的控制上。
還記得我們文章前面提到的2的32次方嗎?
沒錯,32位操作系統(tǒng)能夠管理的內(nèi)存數(shù),正是4294967296位,換算下來,這個數(shù)據(jù)正好是4GB。
加上系統(tǒng)保留的內(nèi)存數(shù),和一些其他要利用的空間,32位系統(tǒng)最大支持的內(nèi)存數(shù),大概只剩下3個G多一點了。
64位系統(tǒng)支持的內(nèi)存量,就要比32位的大很多,目前64位桌面級的Windows系統(tǒng),最大可以支持128GB的內(nèi)存,不少家庭的電腦配備的內(nèi)存容量,還是4GB、8GB的級別,所以64位操作系統(tǒng) 64位硬件,將是未來很長一段時間里,我們選購軟硬件平臺的最佳選擇。
聯(lián)系客服