Math 41位可以表示多少年的毫秒时间戳?

Math 41位可以表示多少年的毫秒时间戳?,math,time,timestamp,64-bit,bit-manipulation,Math,Time,Timestamp,64 Bit,Bit Manipulation,我在看电视。这篇博文描述了如何生成64位标识符。他们的机制将64位中的41位分配给毫秒时间戳,他们说: 41位表示以毫秒为单位的时间(为我们提供了41年的ID和自定义纪元) 这是打字错误吗?我计算出你可以用41位存储69年的毫秒时间戳。以下是方法: 41位中存储的最大毫秒数:(2^41)-1=2199023255551毫秒 除以(1000*60*60*24*365)毫秒/年=69年 那么,我错在哪里呢?你的计算没有错 (2^41)-1 ms == 2199023255.551 s

我在看电视。这篇博文描述了如何生成64位标识符。他们的机制将64位中的41位分配给毫秒时间戳,他们说:

  • 41位表示以毫秒为单位的时间(为我们提供了41年的ID和自定义纪元)
这是打字错误吗?我计算出你可以用41位存储69年的毫秒时间戳。以下是方法:

  • 41位中存储的最大毫秒数:(2^41)-1=2199023255551毫秒
  • 除以(1000*60*60*24*365)毫秒/年=69年

那么,我错在哪里呢?

你的计算没有错

(2^41)-1 ms
    == 2199023255.551 s
    == 610839.7932086 hr 
    == 25451.65805036 days 
    == 69.6828 Julian years 
    == 69.6843 Gregorian Years
这与你的成绩非常吻合(
69年

然而,你链接到的网站确实说,
41位
提供了它们

41年的IDs,有一个自定义的纪元


在这种情况下,“纪元”可能指的是开始日期。考虑到这篇文章发表于“3年前”,或者是在
2012年
,我们可以计算出他们的时代开始于
2012+41-69==1984年
。这个日期可能被选为。

你的数学检查出来了,所以要么是打字错误,要么是他们正在用这些数据做一些事情,而不是你和我认为他们正在做的事情。:-)@templatetypedef谢谢。这让我觉得自己很愚蠢/让我发疯。Google
毫秒2199023255551
,很多结果都支持你的理论。他们的时代是28年前(在撰写本文时),他们说他们还有41年。(我发现很容易记住:纳米世纪有π秒(精确到1%以上)。自定义历元是如何影响这一点的,为什么他们提到客户历元,ew不需要减去历元开始前使用的毫秒数。你用什么程序获得输出的?哦,我只是手工输入。我可能是通过谷歌或手工进行转换的。有人能告诉我为什么我们要减去-1@rookie减去1放弃0值。