公告:服务器迁移已顺利完成! 网址全面启用 https

服务器2号 服务器3号 服务器4号 服务器5号

申请VIP无广告,支付宝,微信,USDT!
在线客服请尝试以下不同链接如果进不了的话在线客服(1) (2) (3) (4) (5) (6)
(7) (8) (9) 实时开通

查看完整版本: 1970年为何如此特殊?为啥电脑手机的时间只能设置到19701月1日?[14P]

全胶片外壳 2017-9-28 18:55

1970年为何如此特殊?为啥电脑手机的时间只能设置到19701月1日?[14P]

今天,就来和大家简单地聊一下,有关手机、平板、电脑的初始日期,为啥只能最早设置到1970年1月1日的事儿吧。
还记得大概一年之前,苹果手机出过的一个Bug么?
用户把系统日期调整成1970年1月1日,就会导致手机无限死机,重启也不能解决问题,只能送到苹果官方售后的天才吧(Genius Bar)寻求帮助。
[img=2666,1500]https://p3.pstatp.com/large/3c6900040eb2d09f7d87[/img]
[align=center]苹果解决这个bug的手段也很简单粗暴——不让用户将日期设置成1970年1月1日了[/align]
[img=2309,1732]https://p1.pstatp.com/large/3c6d000302b9237b01a0[/img]
[align=center]无限重启了,真是伤不起~~[/align]
其实,更好奇的宝宝们,你们有发现没?其实你们应该也注意到了,除了电子设备的系统日期,电脑、手机上的各种文件、文件夹的日期,也是不会比1970年1月1日更早的了。
[img=600,217]https://p1.pstatp.com/large/3c6b00042a19c4a85087[/img]
不少买过旧手机的小白同学,看到手机、电脑里有一些文件,日期是1970年1月1日的,就会怀疑人家卖给自己的,是一个古董货。
[img=1050,784]https://p3.pstatp.com/large/3c6e0002f94e6f380348[/img]
其实没必要这样担心啦,对方要是真卖给你一个1970年的古董,那都是能进博物馆的级别了,这么交易,你还不亏呢~~
[img=550,374]https://p3.pstatp.com/large/3c6c00024db7bf21de3d[/img]
[align=center]即使是这款旧Apple II,最早也已经是上个世纪80年代起的产物了[/align]
好的,重回正题~~
要解释这个问题,就要从计算机编程的原理开始了,大家准备好了吗?看不懂没有关系,直接关注加粗的部分就行。
[b]最初,CPU和配合的计算机操作系统,都是32位,所以时间也是用32位表示。[/b]
[indent]System.out.println(Integer.MAX_VALUE);
2147483647
[/indent]这个数字是不是很熟悉?[b]没错,就是2的31次方-1 ![/b]
[img=1075,611]https://p1.pstatp.com/large/3c6b0004432f84c61ccc[/img]
Integer 在JAVA内用32位表示,因此32位能表示的最大值是2147483647。
另外1年365天的总秒数是 31536000,2147483647/31536000 = 68.1,也就是说32位,即2147483647秒,最多能表示的时间是68年。
[img=590,350]https://p3.pstatp.com/large/3c6d0002fed676a2cadc[/img]
最早出现的UNIX操作系统,考虑到计算机产生的年代和应用的时限(1968年诞生),所以综合取了1970年1月1日作为UNIX TIME的纪元时间,而java自然也遵循了这一约束。
[img=259,259]https://p1.pstatp.com/large/3c6f0002f43b23ee6d05[/img]
从1970年开始,过了68.1年,最终到了2038年01月19日03时14分07秒,便会到达32位系统表示的最长时间。
过了这个时间点,所有32位操作系统时间便会变为10000000 00000000 00000000 00000000,算下来也就是1901年12月13日20时45分52秒,这样便会出现时间回归的现象,很多软件便会运行异常了。
[img=219,155]https://p3.pstatp.com/large/3c6900043807880bc4d0[/img]
[align=center]2000年之前的几年,人们曾担心“千年虫”问题,但幸好问题都解决了[/align]
不少聪明的好奇心宝宝会说了,按刚才的表述方法,32位的时间是相当有限的,那我们把电脑、手机的硬件系统和软件系统,一起升级到64位,或是128位,问题不就解决了么?
是的,你很聪明,计算机工程师们,也是这么想的~~
[img=720,720]https://p3.pstatp.com/large/3c680004411f830f5f26[/img]
大家应该都知道次方的威力,2的64次方能表示的数,比2的32次方要高的多得多:
按照上述的规则除以2,那也是一个长达18位的超级大数字,比2147483647要大多了哟~~
[img=1075,606]https://p3.pstatp.com/large/3c69000445bd7d720210[/img]
感兴趣的同学们,可以计算一下这个数字按秒来计,大概能表达多少年吧~~
emm……还是从1970年1月1日开始计算起,是 292,277,026,596年12月4日15时30分08秒。
啧啧,2亿年后,你我都早已不在了,人类还会存在么~~
[img=800,450]https://p3.pstatp.com/large/3c6800044e07470e3eaa[/img]
大家应该听说过iPhone 5S时代,[b]苹果推出的64位架构的A7吧[/b],后来Android阵营也逐步跟进了,[b]现在基本上主流的电脑、手机,都运行的是64位的操作系统,部分软件,也渐渐开始添加针对64位的支持。[/b]
[img=640,353]https://p9.pstatp.com/large/3c6d0002fcec839fa63c[/img]
1970年1月1日的开始,和2038年01月19日的故事,到这里就结束了。
最后来给大家做一个简单的科普:所谓32位、64位操作系统和相关硬件,是指CPU一次能处理队列序令的能力,32位的当然是一次性执行32位的数据,64位的当然是一次性执行64位的数据。
[img=499,302]https://p1.pstatp.com/large/3c6f00031408229c9359[/img]
理论上来说,64位处理器的运算能力,要比32位的要强一倍,当然还要看CPU的其他指标,这个不能一概而论。
[img=640,360]https://p3.pstatp.com/large/3c6d00031e3423be5e70[/img]
而且除了运算能力之外,与32位处理器相比,64位处理器的优势还体现在系统对内存的控制上。
还记得我们文章前面提到的[b]2的32次方吗?[/b]
[b]没错,32位操作系统能够管理的内存数,正是4294967296位,换算下来,这个数据正好是4GB。[/b]
加上系统保留的内存数,和一些其他要利用的空间,32位系统最大支持的内存数,大概只剩下3个G多一点了。
[img=419,486]https://p1.pstatp.com/large/3c6d0003222908a83977[/img]
64位系统支持的内存量,就要比32位的大很多,目前64位桌面级的Windows系统,最大可以支持128GB的内存,不少家庭的电脑配备的内存容量,还是4GB、8GB的级别,所以64位操作系统+64位硬件,将是未来很长一段时间里,我们选购软硬件平台的最佳选择。
[img=725,483]https://p1.pstatp.com/large/3c730001279c5f1e8989[/img]

wujjianbo 2017-9-29 09:49

还有这种设计限制啊,一直没注意过,去试试
页: [1]
查看完整版本: 1970年为何如此特殊?为啥电脑手机的时间只能设置到19701月1日?[14P]