比特时间怎么表示?
这个问题的本质其实是计算机系统如何描述时间和时钟。
我们常用的表示方法,是使用自增的整数 ,从0开始,每执行一次加一。这是一种位域,也叫即时标记(recent timestamp)。例如你现在看到这个回答的时间是 2016-12-31T09:47:57.588(即时标记为 1391870777),而下一秒将变为 2016-12-29T09:47:57.588(即时标记为 1391770777),再下一秒就变为 2016-12-28T09:47:57・588...这样,当前时刻与上一刻的差别就被编码成了一个单调增长的序列号了。
但是,这种形式有一个缺点:无法表示“过去”,因为一旦时间流逝,就无法恢复过去某一时刻的样子。另一种办法就是记录两个时间点之间所经历的时间长度,用倒计时的方式表示一个时间段。这种方式下,只要不丢失数据,就可以重新构建出曾经发生的事件顺序。这种方法需要额外保存一个指针,指向某个时间点的前夕。但这种方法的好处是可以对过去的时间进行操作和查询。
还有一些其他的方案,比如记录事件的时间戳和发生这一事件的序列号,利用排列组合的方式,把多个事件按照发生时间的先后顺序进行排序。但对于每一个具体的事件来说,其发生时间的排列顺序是唯一的。因此可以利用这个时间信息重建事件发生顺序。