解释为什么iPhone时间调整到1970就变砖头[图]
你或许已经得知,在 iPhone 5s 以上的 64 位 设备上,把时间调整到 1970 年 1 月 1 日,甚至 1970 年的任何时间,都会直接让 iPhone 变砖……
希望你不是通过亲自尝试才了解到的……
事实上,你不需要特别深入的计算机知识,就可以明白为什么 iPhone 将时间调到 1970 年会变砖
拥有丰富的 iOS 和 Mac 设备 Bug 研究经验的技术人士 Tom Scott 认为,这是 iOS 系统背后的 UNIX 时间戳的整数下溢(Unix Epoch Integer Underflo)所导致的问题。
为此,我们撰写了一份文字版的傻瓜说明,告诉你为什么 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 秒,过了多少秒。
这个系统一直沿用至今。
明白 UNIX 时间,继续往下讲你就能明白了。
二进制、位元系统、整数溢出和整数下溢
看上去超级复杂的四个词……但别着急,一步一步看你就能看懂。
计算机,包括 PC、手机等等,采用二进制(0 和 1 )来表达一切,因为这意味着计算芯片上每一个晶体管的两个状态关和开。所有调到 1970 年而变砖的 iOS 设备都是 64 位的。这意味着,这台设备最多可以储存处理 64 个二进制位元,也就是 64 个 0 或 1。