Math 41位可以表示多少年的毫秒时间戳?
我在看电视。这篇博文描述了如何生成64位标识符。他们的机制将64位中的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
- 41位表示以毫秒为单位的时间(为我们提供了41年的ID和自定义纪元)
- 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值。