解釋為什么iPhone時間調(diào)整到1970就變磚頭 求解釋,為什么狀態(tài)欄里的時間老是不能跟真正的時間同步呢?
你或許已經(jīng)得知,在 iPhone 5s 以上的 64 位 iOS 設(shè)備上,把時間調(diào)整到 1970 年 1 月 1 日,甚至 1970 年的任何時間,都會直接讓 iPhone 變磚……
希望你不是通過親自嘗試才了解到的……
事實上,你不需要特別深入的計算機知識,就可以明白為什么 iPhone 將時間調(diào)到 1970 年會變磚:
擁有豐富的 iOS 和 Mac 設(shè)備 Bug 研究經(jīng)驗的技術(shù)人士 Tom Scott 認為,這是 iOS 系統(tǒng)背后的 UNIX 時間戳的整數(shù)下溢(Unix Epoch Integer Underflow)所導(dǎo)致的問題。
為此,我們撰寫了一份文字版的傻瓜說明,告訴你為什么 iPhone 時間調(diào)到 1970 年會變磚。
UNIX 時間
UNIX 時間是當年的計算機工程師們?yōu)榱嗽谙到y(tǒng)中更加清楚明了表達時間,所引入的一個設(shè)定。
正常人表達時間是這樣的:2016 年 2 月 17 日 下午 12:54:41
UNIX 系統(tǒng)表達時間是這樣的:1455684881
你可能會問:為什么計算機不能像正常人那樣表達時間呢?
如果你學(xué)過中學(xué)地理可能會明白,由于全世界有 24 個時區(qū),每個時區(qū)在同一時刻的時間都不一樣,結(jié)果導(dǎo)致如果計算機系統(tǒng)像人一樣記錄時間將會異常的復(fù)雜,導(dǎo)致各種各樣的故障。因此,你也可以理解為,UNIX 程序員們?yōu)榱耸∈聝海_發(fā)了一個小程序……在這個程序的基礎(chǔ)上,UNIX 系統(tǒng)再通過你的電腦或手機所處的地理位置計算時區(qū),告訴你正確的時間。
具體來說,協(xié)調(diào)世界時 1970 年 1 月 1 日 0 時 0 分 0 秒被設(shè)定為 UNIX 時間的“零時”。上面那組數(shù)字的意義:現(xiàn)在距離 1970 年 1 月 1 日 0 時 0 分 0 秒,過了多少秒。
這個系統(tǒng)一直沿用至今。
明白 UNIX 時間,繼續(xù)往下講你就能明白了。
二進制、位元系統(tǒng)、整數(shù)溢出和整數(shù)下溢
看上去超級復(fù)雜的四個詞……但別著急,一步一步看你就能看懂。
計算機,包括 PC、手機等等,采用二進制(0 和 1 )來表達一切,因為這意味著計算芯片上每一個晶體管的兩個狀態(tài):關(guān)和開。所有調(diào)到 1970 年而變磚的 iOS 設(shè)備都是 64 位的。這意味著,這臺設(shè)備最多可以儲存處理 64 個二進制位元,也就是 64 個 0 或 1。
舉個例子:我在寫到這篇文章的這一段的時候,查了一下當前的時間:
東八區(qū) 2016 年 2 月 17 日 下午 12:04:51
然后我拿這個時間到 UNIX 時間轉(zhuǎn)換器里轉(zhuǎn)換了一下,得到:
1455681891
再用十進制轉(zhuǎn)二進制,得到:
01010110110000111111000101100011,
你能看到這段二進制數(shù)是 32 位的——32 個 0 或 1。這是因為,直到 2038 年 1 月 19 日的凌晨 3 時 14 分之前,我們的時間在計算機里都可以用 32 位的 UNIX 時間系統(tǒng),也就是 32 個 0 或 1 來表示。
數(shù)位太多可能觀察起來有點復(fù)雜,不如我們找一個 2 位的系統(tǒng)來說明一下。等號前面是二位數(shù),等號后面是十位:
00 = 0
01 = 1
10 = 2
11 = 3
這意味著一個 2 位的系統(tǒng)最高能計的整數(shù)是 3,這個數(shù)字在計算機學(xué)里叫做“二進制寄存器寬度”。
再找一個 4 位的系統(tǒng):
0000 = 0, 0001 = 1, 0010 = 2, 0011 = 3, 0100 = 4, 0101 = 5….
以此類推,1111 = 15
一個 4 位 系統(tǒng)最高能計的整數(shù),也即其二進制寄存器寬度是 15。(更方面計算二進制寄存器寬度的公式為 2 的 n 次方 – 1,其中 n 等于系統(tǒng)的位數(shù)。)
現(xiàn)在你明白計算機系統(tǒng)的位元系統(tǒng)了!那么整數(shù)溢出是怎么回事?
如果你在一個 2 位的系統(tǒng)上嘗試計十進制的“4”,會發(fā)現(xiàn)系統(tǒng)從“3”的 11 變回了 00;同理,如果你在一個 4 位的系統(tǒng)上嘗試計十進制的“16”,會發(fā)現(xiàn)系統(tǒng)變回了 0000,這便是“整數(shù)溢出”。
再同理,如果你在一個 4 位的系統(tǒng)上嘗試計負數(shù),比如 -1 的話,系統(tǒng)會從 0000 跳到 1111,也就是十進制的“15”。這是因為這個整數(shù)格式不支持負數(shù),也就是我們討論的“整數(shù)下溢”。
Tom Scott 用電腦游戲《文明》初代里的甘地來解釋這個不算 bug 的 bug:游戲初始時,印度執(zhí)政者甘地的進攻值只有 1(準確反映了現(xiàn)實世界里甘地的“非暴力”哲學(xué)思想)。然而在游戲進行中如果不斷降低甘地的進攻值,降低到 0 ,進而降低到 0 以下的話,整數(shù)系統(tǒng)就亂了,導(dǎo)致甘地的實際進攻值突然被提到最高——這是因為《文明》的系統(tǒng)里采用的整數(shù)格式遇到了“整數(shù)下溢”……
這么傻帽的問題為什么解決不了?
事實上,已經(jīng)解決了……
UNIX 整數(shù)格式的確有允許負數(shù)存在的版本,然而蘋果湊巧目前沒有在 64 位 iOS 設(shè)備的 UNIX 時間系統(tǒng)里采用這個版本,也就遇到了 1970 年的變磚 Bug……
隨便抓起手邊任何一個智能設(shè)備(比如你的 64 位 iPhone),嘗試把系統(tǒng)時間往最早調(diào)(千萬別真的調(diào)),你會發(fā)現(xiàn)絕大多數(shù)的最早時間限制都在 1970 年 1 月 1 日。正如前面第一個小章節(jié)提到的,這是 UNIX 時間的起點,也是你的 iPhone 能夠正確顯示的最早時間。
day-freeze-bug
系統(tǒng)時間調(diào)到 1970 年 1 月 1 日 0 時 0 分 0 秒,這個操作從計算機原理上本身不會直接導(dǎo)致你的 iPhone 變磚。可一旦你的手機里存儲了之前的短信、電子郵件,或者已經(jīng)過期的日歷項,這會導(dǎo)致系統(tǒng)在追溯時間時最終定位到了一個比 1970 年 1 月 1 日 0 時 0 分 0 秒更早的時間。
這樣,你的 iPhone 的 UNIX 時間變成了一個負整數(shù)——也就是在二進制數(shù) 64 個 0 的基礎(chǔ)上,發(fā)生了一次整數(shù)下溢。從 0000000000000000000000000000000000000000000000000000000000000000 變成了 1111111111111111111111111111111111111111111111111111111111111111。
接下來,iPhone 會發(fā)現(xiàn)你老婆一秒鐘前給你發(fā)來的短信,發(fā)生在二進制 64 個 1 所代表的 UNIX 時間中。換算成人類的時間,也就是 292277026596 年 12 月 4 日 15 時 30 分 6 秒。
可能由于蘋果公司 iPhone 在設(shè)計的時候根本沒想過這臺設(shè)備能在大約 8000 年以后開機,也就顯示不了超過五位數(shù)的年份,更別提一個十二位數(shù)的年份了。
因此,你的 iPhone,就這樣變磚了。換句話說,你的 iPhone,跪倒在永生的宇宙萬物面前了。
為什么我的iphone6plus一按導(dǎo)入通訊錄就閃退?
iphone6plus一按導(dǎo)入通訊錄就閃退原因:是系統(tǒng)的問題,導(dǎo)致手機不穩(wěn)定才會經(jīng)常閃退的。解決方法:1、點擊“設(shè)置”。2、點擊“通用”。3、點擊“還原所有設(shè)置”即可。蘋果手機其他軟件閃退的解決方法:1、建議每天晚上睡覺前進行一次開關(guān)機操作,來釋放內(nèi)存,減少垃圾積累。2、刪除不常用的大容量APP,減少...
新手機反應(yīng)慢怎么辦?
注:游戲畫質(zhì)、抗鋸齒等顯示效果越高,系統(tǒng)負載越重,更容易導(dǎo)致發(fā)熱、游戲運行不穩(wěn)定等情況,建議在不影響視覺體驗的情況下適當滲棚調(diào)整降低游戲畫質(zhì)等顯示效果。9、升級系統(tǒng) 系統(tǒng)新版本提升了兼容性和穩(wěn)定性,建議進入【設(shè)置>系統(tǒng)升級】或【設(shè)置>我的設(shè)備>iQOO UI版本】檢查手機系統(tǒng)是否為最新版本,并將...
iphone6把時間調(diào)到了2001年,結(jié)果照片都不見了,但是內(nèi)存里顯示還占用12...
這是蘋果手機記憶功能,照片的占的空間是實時存在這是正常現(xiàn)象。你把時間調(diào)到一個有照片的記錄的時間,手機會顯示當下時間的照片。
為什么iphone的激活日期會比生產(chǎn)日期還早??
如果是通過正規(guī)渠道購買,可能購買的是官換機,即手機經(jīng)過官方返廠維修后以更低價格銷售的手機,與正常手機無區(qū)別。一、蘋果出的每一臺產(chǎn)品都有一個序列號,每個序列號都記錄著蘋果產(chǎn)品的型號、顏色、生產(chǎn)日期、版本、機身內(nèi)存等相關(guān)信息。二、查詢結(jié)果激活日期早于生產(chǎn)日期的為售后換機(官方翻新機)。三...
iphone為什么會在很冷的時候停用
因為寒冷的環(huán)境會讓iPhone電池內(nèi)部的化學(xué)反應(yīng)速率降低、電解液阻值變大,導(dǎo)致手機電池內(nèi)部產(chǎn)生的電流減少,手機電池有電卻無法釋放,最后造成手機跳電。嚴重的時候就會造成手機自動關(guān)機,手機停用等等。
蘋果為什么不允許iPhone降級
一、蘋果為什么不允許iPhone降級 從官方的解釋來看,是當蘋果手機的電池容量低于設(shè)定的值時,手機會自動調(diào)整cpu的運行速度,從而“延長”手機的電池使用時間和防止因電池供電不足的意外關(guān)機。其理由其實是不充足的,如果有這樣必要的話,建議當手機容量低于一定值時,由用戶自己來決定是否進入該程序,不妨在...
蘋果6為什么老是很卡很卡的
iPhone手機變卡,主要是由于存在以下情況導(dǎo)致:(1)系統(tǒng)問題,如果系統(tǒng)版本比較低,可能會由于舊系統(tǒng)存在某些BUG未修復(fù)或業(yè)務(wù)功能未優(yōu)化,使手機在使用APP等應(yīng)用過程中出現(xiàn)卡的情況,建議更新到最新的ios系統(tǒng)使用。(2)內(nèi)存問題,如果內(nèi)存比較小,在運行某些大型手游或APP的時候,需要占用大量內(nèi)存,內(nèi)存不足...
iPhone7老是出現(xiàn)黑屏重啟問題是為什么
5、當手機手機進入DFU以后,這個時候電腦上的iTunes就會彈出提示連接到一臺iPhone,點擊“確認”即可;6、 當點擊“確定”以后,iTunes就會出現(xiàn)如下圖的提醒,這個時候比較關(guān)鍵的一步來了,鍵盤上的shift鍵,再點擊“恢復(fù)iPhone”按鈕;7、點擊“恢復(fù)iPhone”按鈕以后,系統(tǒng)就會打開文件夾,然后就選擇之前...
蘋果14怎樣調(diào)節(jié)時間
完成地區(qū)設(shè)置后,你可能還需要根據(jù)所在地區(qū)的習(xí)慣,調(diào)整其他設(shè)置,如日期格式、時間顯示方式等。確保所有設(shè)置都符合你的需求,以便更好地使用iPhone 14。請注意,更改地區(qū)設(shè)置可能會影響某些應(yīng)用的功能或數(shù)據(jù),特別是在涉及地理位置服務(wù)的應(yīng)用中。因此,在更改設(shè)置之前,請確保了解可能的影響。
為什么iPhone x會頻繁自動重啟啥原因呢?
4、溫度過低:當設(shè)備的溫度過低時,iOS設(shè)備可能會暫時縮短電池的使用時間,并有可能導(dǎo)致自動重啟。攜設(shè)備返回溫度較高的環(huán)境時,電池使用時間將恢復(fù)正常。5、使用非原裝的充電器:使用非原裝的充電器,充電電壓和充電電流控制的不嚴格的話,也會損傷iphone手機的電池,這樣iphone手機的電池耐用度會比較差,...
相關(guān)評說:
蒸湘區(qū)完整: ______ 1、iTunes10.2版本后,手機連接電腦并在打開iTunes的情況下,手機的時間會與電腦上的時間一致. 2、目前iPhone升級至iOS4.0以后自動設(shè)置時間開啟的狀態(tài)下,時間會自動變更,建議使用手動設(shè)置調(diào)整時間.
蒸湘區(qū)完整: ______ 1、原因:蘋果手機時間不準,是用戶把時間校準選擇了bai”使用網(wǎng)絡(luò)提供的時間du“,把這個選項關(guān)閉手動校準后,就可以恢復(fù)正常.2、調(diào)整時間zhi步驟如下:(1)檢查手機網(wǎng)絡(luò)數(shù)據(jù)是否為正常連接使用中,只有連接到網(wǎng)絡(luò)才能同步時間.(2)打開手機的【設(shè)置dao】菜單內(nèi),找到【日期和時間】.如下圖:(3)在24小時這里,關(guān)閉按鈕.(4)關(guān)閉自動設(shè)置,還可以調(diào)整容時區(qū)和具體時間日期.
蒸湘區(qū)完整: ______ 原因 iOS系統(tǒng)時間使用Unix時間戳(Unix epoch)表示(time_t數(shù)據(jù)類型).在系統(tǒng)中,使用系統(tǒng)位數(shù)個二進制位儲存時間. Unix時間戳規(guī)定,UTC時區(qū)的1970年1月1日 0點0時0秒的值為0,以秒為單位,即每過一秒,二進制數(shù)字加1. 觸...
蒸湘區(qū)完整: ______ 日前,據(jù)部分蘋果iPhone與iPad用戶反映,iOS系統(tǒng)時間設(shè)定存在嚴重Bug,如果修改時間至“上世紀七十年代”,iPhone就會直接變磚. 也就是說,如果你將iPhone的時間設(shè)置為1970年1月1日,隨后重啟設(shè)備,它就會徹底廢掉. 外媒TechRadar報道稱,目前所有使用A7, A8, A8X, A9和A9X芯片并且裝載iOS8和iOS9系統(tǒng)的iPhone和iPad全都會受到這一bug的影響. 不過該bug具有隨機性,并不會使所有人中招.但若設(shè)備不幸中招,它還能進入恢復(fù)模式,只是想讓它真正復(fù)活還需去蘋果售后維修.
蒸湘區(qū)完整: ______ 蘋果官方在美國時間2月15日回應(yīng),承認手動將iOS設(shè)備的日期設(shè)置到1970年5月或之前時間,iOS設(shè)備將無法重啟,并表示即將發(fā)布一個系統(tǒng)更新以解決這一問題.不過,具體是等到iOS 9.3更新,還是提前推出一個漏洞修復(fù)版本,目前并未披露.對于產(chǎn)生漏洞的原因,蘋果方面并未解釋,不過各路技術(shù)人員分析稱,最合乎邏輯的原因是與時區(qū)有關(guān).iOS設(shè)備是利用二進制來存儲時間,時間起點是世界標準時間1970年1月1日0點0分0秒,即UTC時間.如果在北京將iPhone時間設(shè)置為1970年1月1日0點0分0秒,UTC時間是1969年12月31日16時0分0秒,就出現(xiàn)了時間負值,從而引起設(shè)備崩潰.
蒸湘區(qū)完整: ______ 這是蘋果手機IOS系統(tǒng)的一個漏洞(bug),這是因為蘋果iOS系統(tǒng)時間使用Unix時間戳(Unix epoch),將世界標準時間(UTC)的1970年1月1日0點0分0秒的值設(shè)置為0,當時鐘出現(xiàn)小于0的情況時,會導(dǎo)致系統(tǒng)崩潰.注:原因來自互聯(lián)網(wǎng)非蘋果官方,蘋果公司已公開承認的確有此漏洞但尚未公布原因.
蒸湘區(qū)完整: ______ 依次點擊“設(shè)置”——”通用“——”日期與時間“——打開”自動設(shè)置“ (如果”自動設(shè)置“未能更正正確的日期與時間,可以關(guān)閉”自動設(shè)置“,手動調(diào)整日期與時間)
蒸湘區(qū)完整: ______ 由于iPhone手機iOS系統(tǒng)中日期和時間默認狀態(tài)下是使用自動設(shè)置功能,可以與網(wǎng)絡(luò)自動同步,一般很少需要進行系統(tǒng)時間修改.那么如果需要調(diào)整系統(tǒng)時間,則可以按照以下方法. 1、在“設(shè)置”應(yīng)用中,進入“通用”選項頁面. 2、在“通用”選項頁面,選擇“日期與時間”. 3、在“日期與時間”頁面,在“自動設(shè)置”功能關(guān)閉后,會出現(xiàn)日期和時間,這時,點擊日期和時間,即可進入“日期和時間”的設(shè)置頁面,選擇合適的日期和時間即可.
蒸湘區(qū)完整: ______ 1. iPhone 上保持 “時間與日期”為“自動設(shè)置” 2. 先把自己電腦的時間修改正確,然后接上IPHONE,這個時候,把電腦時間或者日期修改掉,記得不要去改時區(qū),時區(qū)還是保持北京的,如果沒改時間或者日期,只是修改了時區(qū),問題還是一樣無法解決.3. 打開iTunes 后同步一次, 再 關(guān)閉 iTunes,發(fā)現(xiàn)時間已經(jīng)同步到修改的時間或者日期 4. 再把電腦的時間設(shè)置修改成正確的時間和日期. 5. 重覆第三步的動作:打開iTunes 后同步一次, 再 關(guān)閉 iTunes 之后就會變成正確的時間和日期了.
蒸湘區(qū)完整: ______ 把iPhone的時間手動調(diào)節(jié)到1970年1月1日,再重啟之后手機就變磚了. 蘋果沒有解釋出現(xiàn)這一問題的具體原因,不過有民間技術(shù)人士稱,這是因為蘋果iOS系統(tǒng)時間使用Unix時間戳(Unix epoch),將世界標準時間(UTC)的1970年1月1日0...