算术编码

算术编码是一种无损数据压缩方法，也是一种熵编码的方法。和其它熵编码方法不同的地方在于，其他的熵编码方法通常是把输入的消息分割为符号，然后对每个符号进行编码，而算术编码是直接把整个输入的消息编码为一个数，一个满足（0.0 ≤ n < 1.0）的小数n。

数据长度

假设是预测的X[i] = n的几率,是实际上的X[i] = n的几率

也就是说,若length(X) = N,当中会有N个elements等于n
则

另一方面，由于编码的假设

在几率的预测完全准确的情况下,

Totoal coding length b 的范围是

算术编码的总数据长度的上限比霍夫曼编码更低

自适应算术编码

与其他类似的数据压缩方法相比，算术编码的一个优点是适应的便利性。适应是在处理数据时改变频率（或概率）表。只要解码中的频率表以与编码相同的方式和相同的步骤被替换，解码的数据就匹配原始数据。通常，同步基于在编码和解码过程期间出现的符号的组合。

区间编码

算术编码与区间编码有很深的相似渊源，以至于人们通常认为两者的性能是相同的，如果确实有什么不同的话也只是区间编码仅仅落后几个位的值而已。区间编码与算术编码不同，通常认为它不被任何公司的专利所约束。
区间编码的原理是这样的，它没有像算术编码那样从[0,1] 开始并根据每个字符出现的概率把它分成相应的不同的小区间，它从如000,000,000,000 到 999,999,999,999 这样一个很大的非负整数区间开始，并且根据每个字符的概率划分成小的子区间。当子区间小到一定程度最后结果的开头数字出现的时候，那些数字就能够“左移”出整个运算，并且用“右边”的数字替换——每次出现移位时，就大体相当于最初区间的一个回归放大（retroactive multiplication）。