Method of programming a multi level cell

A method of programming a multi level cell is provided to program LSB(Least Significant Bit) and MSB(Most Significant Bit) at the same time, when data is programmed in the multi level cell. According to a method of programming a multi level cell, first data is stored in a first storing unit. Second data is stored in a second storing unit. Data of LSB(Least Significant Bit) is programmed according to the data of the first storing unit and the second storing unit. Data of MSB(Most Significant Bit) is programmed according to the first and the second bit continuously to the program of the LSB. The first storing unit and the second storing unit are a first latch part and a second latch part of a page buffer for data program of the multi level cell.