1. A method for reading at least one programmed dual bit memory cell using a plurality of programmed dual bit reference cells, each said memory and reference cell comprising a left storage region for storing a first data bit as a level of electron charge and a right storage region for storing a second data bit as a level of electron charge, each said storage region comprising either a low programmed state (a data bit 0 ) wherein said electron charge is stored in said storage region or a high programmed state (a data bit 1 ) wherein no said electron charge is stored in said storage region, wherein each said cell has four possible data states 00, 01, 10, and 11, said method comprising the steps of: (a) programming said reference cells according to a plurality of programming parameters, wherein said first and second data bits of said selected programmed memory cell are determined by reading said first and second data bits of said programmed reference cells; (b) selecting one of the said memory cells to read and determine said selected memory cell's data; (c) reading said left bit of said selected memory cell and generating a left bit output signal; (d) comparing said left bit output signal to at least one reference cell output signal to determine said memory cell data; (e) reading said right bit of said selected memory cell and generating a right bit output signal; (f) comparing said left bit output signal to at least one reference cell output signal to determine said memory cell data; and (g) determining if at least one other said memory cell should be read, and if so repeating steps (b) through (f).