1. A method of decoding data of a non-volatile memory device, the method comprising: a first decoding operation that comprises reading first hard decision data from the non-volatile memory device using a first hard decision read level and performing decoding using the first hard decision data; a second decoding operation that comprises reading first soft decision data from the non-volatile memory device when the decoding fails in the first decoding operation and performing decoding using the first soft decision; and a third decoding operation that comprises changing the first hard decision read level into a second hard decision read level when the decoding fails in the second decoding operation, reading second hard decision data using the second hard decision read level, and performing decoding either using the second hard decision data or using both the second hard decision data and the first soft decision data.