Arithmetic coding actually refers to half of an Arithmetic Coding data compression system.

It has two parts:

- An arithmetic coder
- A data model (e.g., Markovian model)

At any point in time in coding the input stream of data,

- There is a new data character (a fixed number of bits per character)
- There is a set of probabilities for each possible character

The number of bits used to encode a character depends on how much of the range [0, 1] the character's probability is.

The larger the range, the less bits it takes to code the character. The smaller the range, the more bits it takes to code the character.

Typically, the model used to code the data changes based on the data input stream contents. This is known as [adaptive coding]?.