Dmi*_*sky 6 math time 64-bit timestamp bit-manipulation
我正在看Instagram关于分片ID生成的博客文章.此博客文章描述了生成64位标识符.他们的机制将64位中的41位分配给毫秒时间戳,他们说:
- 41位时间(以毫秒为单位)(使用自定义纪元为我们提供41年的ID)
这是拼写错误吗?我计算出你可以存储41位的69年毫秒时间戳.这是如何做:
那么,我错在哪里?
你对计算没错.
(2^41)-1 ms
== 2199023255.551 s
== 610839.7932086 hr
== 25451.65805036 days
== 69.6828 Julian years
== 69.6843 Gregorian Years
Run Code Online (Sandbox Code Playgroud)
哪个与你的结果紧密排列(69 years).
但是,您链接到的网站确实说41 bits给了他们
带有自定义纪元的41年ID
在这种情况下,"Epoch"可能指的是开始日期.鉴于该文章发表于"3年前"或之后2012,我们可以计算出他们的时代开始于2012 + 41 - 69 == 1984.这个日期可能被选为参考.