这种编码有名称吗? (位表示从最高位到最低位除以 2)
Is there a name for this encoding? (bits represent division by 2 from most to least significant)
我正在制定一个规范,该规范要求以某种方式表达小数(时间戳的亚秒部分),该方式可以以一定的精度(位数)进行编码,然后使用前导位得到大致相同的分数。
目的是让不同的系统支持不同的时间戳精度。一些系统可能只有毫秒精度的时间戳,其他系统可能有纳秒精度或更高。此外,额外的随机数据存储在该值之后,并且由于 space 限制,解析器无法知道在所有情况下有多少位是亚秒级精度与随机数据的确切描述。解析应该仍然能够正常运行并获得“尽可能精确”的时间戳。
编码的灵感来自于 IEEE 754 浮点数所做的工作,基本上会将每个连续的位视为表示下一部分是高于还是低于除以二的值。因此给定一位,可能的值为 0 = .0 和 1 = .5。对于两位,组合为 00 = 0.0、01 = .25、10 = .5、11 = .75。等等。
我的问题是:这叫什么?我觉得这方面一定有一些我不知道在描述这个时可以参考的现有技术encoding/decoding。
这只是标准的位置符号。
在基础 b 中放置符号基本上是这样工作的:你有一个“小数点”(在这种情况下它不是真正的小数点,因为“小数点”意味着“十”) .小数点左边的位置的值为 p0 × b0 其中 p0 是写入位置 0 的值。其左侧的位置具有值 p1 × b1 然后下一个有 p2 × b2, 等等;位置 n 的值为 pn × bn.
同理,直接到点的右边,有p-1×b-1 然后 p-2 × b-2,等等; place -n 的值为 p-n × b-n.
或者换句话说:位置符号在点的两侧完全相同。
而数字的总值就是所有地方值的总和
例如,在 base-10 中(即 b = 10),它看起来像这样:
123.45
是
- 3×100=3×1=3+
- 2×101=2×10=20+
- 1×102=1×10×10=1×100=100+
- 4×10-1=4×1∕10=4∕10 +
- 5×10-2=5×1∕10×1∕10 = 5 × 1∕100 = 5∕100
- = 3 + 20 + 100 + 4∕10 + 5∕100 = 3 + 20 + 100 + .4 + .05 = 123.45
[假设所有数字都以 10 为底。]
这就是位记法的工作原理,你有完全相同的东西,但 b = 2。
换句话说,您的表示实际上只是“用二进制写下数字”。更准确地说,在开头写下带有隐式 0.
的小数部分。
我正在制定一个规范,该规范要求以某种方式表达小数(时间戳的亚秒部分),该方式可以以一定的精度(位数)进行编码,然后使用前导位得到大致相同的分数。
目的是让不同的系统支持不同的时间戳精度。一些系统可能只有毫秒精度的时间戳,其他系统可能有纳秒精度或更高。此外,额外的随机数据存储在该值之后,并且由于 space 限制,解析器无法知道在所有情况下有多少位是亚秒级精度与随机数据的确切描述。解析应该仍然能够正常运行并获得“尽可能精确”的时间戳。
编码的灵感来自于 IEEE 754 浮点数所做的工作,基本上会将每个连续的位视为表示下一部分是高于还是低于除以二的值。因此给定一位,可能的值为 0 = .0 和 1 = .5。对于两位,组合为 00 = 0.0、01 = .25、10 = .5、11 = .75。等等。
我的问题是:这叫什么?我觉得这方面一定有一些我不知道在描述这个时可以参考的现有技术encoding/decoding。
这只是标准的位置符号。
在基础 b 中放置符号基本上是这样工作的:你有一个“小数点”(在这种情况下它不是真正的小数点,因为“小数点”意味着“十”) .小数点左边的位置的值为 p0 × b0 其中 p0 是写入位置 0 的值。其左侧的位置具有值 p1 × b1 然后下一个有 p2 × b2, 等等;位置 n 的值为 pn × bn.
同理,直接到点的右边,有p-1×b-1 然后 p-2 × b-2,等等; place -n 的值为 p-n × b-n.
或者换句话说:位置符号在点的两侧完全相同。
而数字的总值就是所有地方值的总和
例如,在 base-10 中(即 b = 10),它看起来像这样:
123.45
是
- 3×100=3×1=3+
- 2×101=2×10=20+
- 1×102=1×10×10=1×100=100+
- 4×10-1=4×1∕10=4∕10 +
- 5×10-2=5×1∕10×1∕10 = 5 × 1∕100 = 5∕100
- = 3 + 20 + 100 + 4∕10 + 5∕100 = 3 + 20 + 100 + .4 + .05 = 123.45
[假设所有数字都以 10 为底。]
这就是位记法的工作原理,你有完全相同的东西,但 b = 2。
换句话说,您的表示实际上只是“用二进制写下数字”。更准确地说,在开头写下带有隐式 0.
的小数部分。