A flash memory is managed by reserving one or more cells as flag cells to
represent the number N of bits to store in the cells of a memory block,
selecting the value of N from at least three candidates, and programming
the flag cell(s) to represent the selected value. A flash memory is
managed by selecting a value of the number N>2 of bits to store in the
cells of a portion (e.g. a block or page) of the memory, reserving one
other cell of the memory as a flag cell to represent how many bits
actually are stored in each cell of the portion, and, as the cells of the
portion are successively programmed with 1.ltoreq.n.ltoreq.N bits,
programming the flag cell to represent n.