有理数向量的位编码

时间:2018-09-30 20:18:37

标签: memory encoding bit

我想为有理数的结构实现超紧凑存储。

在Alexander Schrijver撰写的“线性和整数编程理论”一书中,我发现了rational number,向量和矩阵的位大小(第15页)的定义:

bit sizes of rational, vector and matrix

有理数的表示很清楚:符号为一位,对数和分数为对数。

我不知道如何只用n位对向量进行编码才能区分其元素? 例如,如果我想写两个元素的向量怎么办: 524 = 1000001100b42 = 101010b。如何仅使用2个附加位来指定1000001100结束和101010开始的时间?

矩阵表示存在相同的问题。

2 个答案:

答案 0 :(得分:3)

当然,不可能仅将整数表示形式相互附加,并添加有关合并位置的信息,因为这将花费比书中公式所给定的位数更多的位数,而我不会可以访问。
我认为这是我不是专家的编码理论所提出的问题。但是我发现了一些可能会指出正确方向的东西。在this post中,除其他外,还描述了“内插代码”。如果将其应用于示例(524,42),则会得到
f(要编码的整数数,均在[1,N] = 2
的范围内 N = 524
这样,已编码的2个整数的最大位长度为
f•(2.58 + log(N / f))= 9,99…,即10位
因此,有可能进行超紧凑的编码,尽管人们不得不花费大量时间进行编码和解码。

答案 1 :(得分:0)

不可能仅使用两位来指定商结束和分数开始的时间。至少您将需要与商的长度或/和分数大小的长度一样大。另一种方法是对商和分数使用固定位数,类似于IEEE 754