Arithmetic coding is a lossless data compression technique that assigns a unique identifier, or "tag", to sequences of symbols. The tag value always lies between 0 and 1. There are two main methods for generating tags: assigning fractions between 0 and 1, or dividing the range into halves and assigning tags to the lower or upper half. Adaptive arithmetic coding allows the frequency table to change while processing data to better match the encoded data to the original. Arithmetic coding provides better compression than Huffman coding and has lower complexity due to using fewer arithmetic operations.