拿什么来拯救你,源源的白苹果?
2016-02-17 21:15:24 来源:瑞记 评论:0 点击:
今天中午,人气少年偶像组合 TFBOYS 成员王源发了一条微博,表示自己的 iPhone 白苹果了:在评论中,他提到「1970.1.1」,这其实就是国外已经吵吵了好几天的 UNIX 时间导致 iPhone 变砖事件。
Q1. 这是怎么回事?
如果你的 iPhone/iPad 是 64 位处理器(iPhone 5s 及以后),把通用 -- 日期与时间 -- 自动设置关掉,把时间修改为 1970 年 1 月 1 日,重启设备后就会发现设备卡死在白苹果界面了。
Q2. 为什么会这样?
在计算机刚刚诞生的时候,工程师们很苦恼如何表示时间,因为世界上划分了许许多多时区,而不同国家甚至有不同的时制(比如美国部分地区实行的夏时制,夏天的白天特别长,因此人为地把时间提前一个小时好提前开始工作)。
聪明的程序员们想到了一个方法:把 1970 年 1 月 1 日 0 点 0 分 0 秒当作「时间的原点」,用「从那以后经过了多少秒」表示具体时间,再按照不同的地点进行时区换算就可以了。
比如下图所示的 2016 年 2 月 12 日 17 点 16 分 14 秒,就是指「1970 年 1 月 1 日 0 点 0 分 0 秒之后的第 1455297374 秒」。使用这一计时系统的 UNIX 系统是计算机系统的始祖,现在一切电子设备几乎都是用这个方式计时的,iPhone 自然也不例外。
计算机进行计算的基础是半导体开关的通断,也就是由 1 和 0 组成的二进制。而处理器的位数,就是进行一次计算时可以存储的二进制位数,64 位处理器自然就是 64 位。也就是说,在 64 位处理器上,时间的原点被标识为下面的 64 个 0:
而把十进制的秒数换算成二进制,就是下面这串 1 和 0 相间的数:
时间的原点是 1970.1.1,那么 1970 年之前怎么办呢?由于二进制数并不存在负数,因此当 64 个 0 再减小,二进制数会突然变成最大的 64 个 1,也就是近三千亿年以后。如果你曾经听说过千年虫事件,这几乎是千年虫倒过来了。
现在,当你把系统时间从 2016 调到 1970 之后,你设置的闹钟、收到的短信和通话记录的时间、日历表中的时间全都乱套了,变成了 1970 年之前,也就是上面这个三千亿年以后。iOS 显然没有给时间留出这么大的位数(实际上由于 iPhone 一开始是 32 位的,因此能够显示的最大时间是 32 个 1,也就是大约 2038 年左右),于是系统就懵逼了。
Q3. 这是谁的问题?
显然是苹果在升级 64 位系统时的小纰漏。正常表示时间的时候其实不应该把全部位数都拿来表示秒,而应该把最前面一位作为正负的标志(类似公元前和公元),这样就能有效地避免从 0 点向前退结果退到最大了。这也不是什么大问题,只要下次发布系统更新的时候调整一下计时方法就好了。
Q4. 我手贱试了一下,结果白苹果了 ==+ 有什么办法吗?
方法 1. 去苹果店找天才吧,他们会帮你处理的(满足条件的话,甚至可能直接帮你换机哦)
方法 2. 就让它白着,设备电耗光了之后时间会自动重置,再充电开机就正常了
方法 3. 拆机,把电池断开再接通,时间同样会重置,然后就可以正常开机了
方法 4. 和男票 / 老公 / 亲爹 / 干爹撒娇,让给买个新的 6s
访问:
相关热词搜索:AppleiPhone 拿什么来拯救你,源源的白苹果? ZRSOFT 数码 通信 互联网 手机 业界 科技 媒体 资讯 IT新闻 言论平台 卓软 ZRSOFT
上一篇:微软墨西哥:Windows 10 Mobile将于2月29日开始推送
下一篇:乐视与阿斯顿-马丁将成立电动汽车合资公司