以毫秒为单位理解位和时间
我正在阅读此页面,其中说 41 位用于使用自定义纪元表示 41 年。
我无法理解以毫秒、位和年为单位的时间之间的关系。任何人都可以帮忙吗?
例如。在 Java 中,System.currentTimeMillis()返回 a long,即64 bits。这是否意味着如果我必须每毫秒生成 1 个,它可以代表 64 年的唯一值?
在上述情况下,41年后会发生什么?如果他们保持相同的方法,他们是否必须增加用于指定的位?
回答
例如。在 Java 中,System.timeinmillis() 返回一个 long,它是 64 位。这是否意味着如果我必须每毫秒生成 1 个,它可以代表 64 年的唯一值?
不,远不止这些。不要忘记,对于您在存储中添加的每一位,您可以存储两倍的值。
2^64 是 18,446,744,073,709,551,616。这就是 64 位整数数据类型中可以保存多少个不同的值。
所以以毫秒精度,那就是:
- 18,446,744,073,709,551,616 毫秒
- 18,446,744,073,709,551 秒
- 307,445,734,561,825 分钟
- 5,124,095,576,030 小时
- 213,503,982,334 天
- 584,542,046 年
也称为“可能比您需要的范围更大”:)