Cells of a flash memory are read by determining respective adaptive
reference voltages for the cells and comparing the cells' threshold
voltages to their respective reference voltages. The adaptive reference
voltages are determined either from analog measurements of the threshold
voltages of the cells' neighbors or from preliminary estimates of the
cells' threshold voltages based on comparisons of the cells' threshold
voltages with integral or fractional reference voltages common to all the
cells. Cells of a flash memory also are read by comparing the cells'
threshold voltages to integral reference voltages, comparing the
threshold voltages of cells that share a common bit pattern to a
fractional reference voltage, and adjusting the reference voltages in
accordance with the comparisons.