31
2018
05

笔墨版愚瓜阐明:为何 iPh申博138官网8864one 时光调到 1970 年

时间:2018-05-31 07:28栏目:风云热点 点击: 68 次

您或者曾经得悉,正在 iPhone 5s 以上的 64 位 iOS 装备上,把时光调剂到 1970 年 1 月 1 日,乃至 1970 年的任什么时候间,城市间接让 iPhone 变砖……

盼望您没有是穿过亲身试验才懂得到的……

实情上,您不必要特殊深刻的盘算机常识,便可以清楚为何 iPhone 将时光调到 1970 年会变砖:

领有丰盛的 iOS 跟 Mac 装备 Bug 研讨教训的技巧人士 Tom Scott 以为,那是 iOS 体系背地的 UNIX 时光戳的整数下溢(Unix Epoch Integer Underflow)所招致的题目。

为此,咱们撰写了一份笔墨版的愚瓜阐明,告知您为何 iPhone 时光调到 1970 年会变砖。

UNIX 时光

UNIX 时光是昔时的盘算机工程师们为了正在体系中愈加明白了然表白时光,所引进的一个设定。

畸形人表白时光是这么的:2016 年 2 月 17 日 下战书 12:54:41

UNIX 体系表白时光是这么的:1455684881

您大概会问:为何盘算机没有能像畸形人那样表白时光呢?

假如您教过中教物理大概会清楚,因为全球有 24 个时区,每一个郊区正在统一时辰的时光皆纷歧样,成果招致假如盘算机体系像人一样记载时光将会异样的庞杂,招致各式各样的毛病。因而,您也能够懂得为,UNIX 过程员们为了费事女,开拓了一个小过程……正在那个过程的基本上,UNIX 体系再穿过您的电脑或脚机所处的地舆地位盘算时区,告知您准确的时光。

详细来讲,和谐天下时 1970 年 1 月 1 日 0 时 0 分 0 秒被设定为 UNIX 时光的“整时”。上里那组数字的意思:当初间隔 1970 年 1 月 1 日 0 时 0 分 0 秒,过了几秒申博138官网8864

那个体系始终相沿至古申博138官网8864

清楚 UNIX 时光,持续往下讲您就可以清楚了申博138官网8864

两进造、位元体系、整数溢出跟整数下溢

看上往超等庞杂的四个词……但别焦急,一步一步看您就可以看懂。

盘算机,包含 PC、脚机等等,采取两进造(0 跟 1 )去表白所有,由于那象征着盘算芯片上每个晶体管的两个状况:闭跟开。一切调到 1970 年而变砖的 iOS 装备皆是 64 位的。那象征着,那台装备最多能够贮存处置 64 个两进造位元,也即使 64 个 0 或 1。

举个例子:我正在写到那篇文章的那一段的时辰,查了一下目前的时光:

东八区 2016 年 2 月 17 日 下战书 12:04:51

而后我拿那个时光到 UNIX 时光转换器里转换了一下,取得:

1455681891

再用十进造转两进造,取得:

01010110110000111111000101100011,

您能看到那段两进造数是 32 位的——32 个 0 或 1。那是由于,曲到 2038 年 1 月 19 日的清晨 3 时 14 分之前,咱们的时光正在盘算机里皆能够用 32 位的 UNIX 时光体系,也即使 32 个 0 或 1 去表现。(为何?请延长浏览:2038年题目)

数位太多大概察看起去有面庞杂,不及咱们找一个 2 位的体系来讲明一下。等号前里是两位数,等号后边是十位:

00 = 0

01 = 1

10 = 2

11 = 3

那象征着一个 2 位的体系最下能计的整数是 3,那个数字正在盘算机教里叫做“两进造存放器宽度”。

再找一个 4 位的体系:

0000 = 0, 0001 = 1, 0010 = 2, 0011 = 3, 0100 = 4, 0101 = 5….

以此类推,1111 = 15

一个 4 位 体系最下能计的整数,也即其两进造存放器宽度是 15。(更圆里盘算两进造存放器宽度的公式为 2 的 n 次圆 – 1,中间 n 即是体系的位数。)

当初您清楚盘算机体系的位元体系了!那末整数溢出是怎样回事?

假如您正在一个 2 位的体系上试验计十进造的“4”,会发明体系从“3”的 11 变回了 00;同理,假如您正在一个 4 位的体系上试验计十进造的“16”,会发明体系变回了 0000,那即是“整数溢出”。

再同理,假如您正在一个 4 位的体系上试验计背数,比方 -1 的话,体系会从 0000 跳到 1111,也即使十进造的“15”。那是由于那个整数格局没有支撑背数,也即使咱们探讨的“整数下溢”。

Tom Scott 用电脑游戏《文化》初代里的苦天去说明那个没有算 bug 的 bug:游戏初初时,印度在朝者苦天的进击值只有 1(正确反应了事实天下里苦天的“非暴力”哲教思维)。可是正在游戏举行中假如一直下降苦天的进击值,下降到 0 ,进而下降到 0 以下的话,整数体系便治了,招致苦天的切实进击值忽然被提到最下——那是由于《文化》的体系里采取的整数格局碰到了“整数下溢”……

这样愚帽的题目为何处理没有了?

实情上,曾经处理了……

UNIX 整数格局确实有容许背数存留的版本,可是苹果恰巧眼前不正在 64 位 iOS 装备的 UNIX 时光体系里采取那个版本,也便碰到了 1970 年的变砖 Bug……

随意抓起脚边任何一个智能装备(比方您的 64 位 iPhone),试验把体系时光往最早调(万万别实的调),您会发明尽年夜大都的最早时光限度皆正在 1970 年 1 月 1 日。正如前里第一个小章节提到的,那是 UNIX 时光的出发点,也是您的 iPhone 可能准确显现的最早时光。

/

体系时光调到 1970 年 1 月 1 日 0 时 0 分 0 秒,那个操纵从盘算机道理上自身没有会间接招致您的 iPhone 变砖。可一旦您的脚机里存储了之前的短疑、电子邮件,或许曾经过时的日历项,那会招致体系正在逃溯时光时终极定位到了一个比 1970 年 1 月 1 日 0 时 0 分 0 秒更早的时光。

这么,您的 iPhone 的 UNIX 时光酿成了一个背整数——也即使正在两进造数 64 个 0 的基本上,产生了挨次整数下溢……

接下去,iPhone 会发明您妻子一秒钟前给您收去的短疑,产生正在两进造 64 个 1 所代表的 UNIX 时光中。换算成人类的时光,也即使 292277026596 年 12 月 4 日 15 时 30 分 6 秒。

大概因为苹果公司 iPhone 正在设想的时辰基本出念过那台装备能正在大概 8000 年当前开机,也便显现没有了超出五位数的年份,更别提一个十两位数的年份了。

因而,您的 iPhone,便这么变砖了。换句话道,您的 iPhone,跪倒正在长生的宇宙万物眼前了。


3317 您或者曾经得悉,正在iPhone5s以上的64位iOS装备上,把时光调剂到1970年1月1日,乃至1970年的任什么时候间,城市间接让iPhone变砖……盼望您没有是通
当前网址:http://www.tycbet007.com/rjd6b215w0e7/81712.html
相关内容
热点内容

Powered by 菲律宾申博娱乐官网 @2014 RSS

Copyright © 2002-2013 新申博138 版权所有