1. A method of programming a multi-bit non-volatile memory device, the multi-bit non-volatile memory device including a memory cell array including a plurality of memory cells and a storage unit electrically coupled to the memory cell array, the method comprising: programming a first bit (FB) of multi-bit data from the storage unit into one of the plurality of memory cells in the memory cell array; and programming a second bit (SB) of multi-bit data from the storage unit into one of the plurality of memory cells in the memory cell array using data inversion.