[376] Bug

Title Text:The universe started in 1970. Anyone claiming to be over 38 is lying about their age.

Origin:https://xkcd.com/376/

https://www.explainxkcd.com/wiki/index.php/376:_Bug

Bug

https://www.douban.com/photos/photo/764740764/

在计算机系统中,从一些任意选择的点开始测量时间。那个特定的时间被称为该系统的“时代”。 UNIX操作系统内部使用1970年1月1日的纪元,并将时间测量为从那时起的秒数。由于这仅适用于操作系统内部的操作(文件上次修改时间等),因此使用1970年1月1日是安全的,因为在该日期之前不存在任何UNIX系统。

但是,由于UNIX包含许多系统函数来操作这些日期,因此一些开发人员将它们误认为是通用日期对象,并在使用负值的情况下在需要日期之前的日期的应用程序中滥用它们。这种用法不可避免地会失败;例如,由于未指定值是有符号或无符号的,因此日期可能被视为远在将来,而不是过去。

Cueball明显以某种方式滥用了系统日期(可能是通过使用无符号数据类型来存储时间戳,时间戳不能存储负值(在这种情况下是1970年之前的日期)或者做一些不支持负值的其他操作),他的朋友通过将“Epoch”与“Epic Fail”相结合来制作双关语 – 这是一个口语,意思是“犯了很大的错误”。

使用UNIX系统日期作为通用日期对象的另一个问题通常称为2038年问题。在2038年1月19日03:14:08,32位版本的Unix时间戳将停止工作,因为它将溢出可以保存在带符号的32位数字中的最大值。 64位版本“将”于12月4日15:30:08到期,时间为292,277,026,596。

标题文本将笑话推向了一个新的水平,宣称整个宇宙都是在Unix开始的时候开始的,因此当漫画于2008年发布时,没有人能超过38岁。公式为’x – 1970′ ,其中x是当前年份,这将解释错误,因为没有可能的早期日期。这也与上周四主义类似。

这个2到32次动力时间溢出问题的例子包括深度撞击宇宙飞船,它在2013年8月11日00:38:49(漫画之后的五年多),从1月起是2到32次幂十分之一秒据推测,自2000年1月1日以来,该工艺系统以十分之一秒的增量跟踪时间,并将其存储在一个带符号的32位整数中,然后在piont上溢出,类似于2038年的问题。深度撞击(宇宙飞船)

Leave a Reply

Your email address will not be published. Required fields are marked *

Categories