A bitwise arithmetic coder such as DMC has two components, a predictor and an arithmetic coder. The predictor accepts an "n"-bit input string "x" = "x"1"x"2..."x""n" and assigns it a probability "p"("x"), expressed as a product of a series of predictions, "p"("x"1)"p"("x"2|"x"1)"p"("x"3|"x"1"x"2) ... "p"("x""n"| "x"1"x"2..."x""n"–1). The arithmetic coder maintains two high precision binary numbers, "p"low and "p"high, representing the possible range for the total probability that the model would assign to all strings lexicographically less than "x", given the bits of "x" seen so far. The compressed code for "x" is "p""x", the shortest bit string representing a number between "p"low and "p"high. It is always possible to find a number in this range no more than one bit longer than the Shannon limit, log2 1 / "p"("x'). One such number can be obtained from "p"high by dropping all of the trailing bits after the first bit that differs from "p"low.