A multi-level cell (MLC) memory array may be programmed using a
programming circuit having a binary input register to store data to be
input into the MLC array and a register to store a programming vector,
where each element in the programming vector corresponds to a charge
storage region of an MLC in the array. A controller may map pairs of bits
from the input register to elements in the programming vector, such that
mapping a pair of bits to an element of the programming vector may set
the vector element to a "program" value if the pair of bits corresponds
to at least one specific program state associated with the programming
vector.