1. A method of decoding data stored in a nonvolatile memory array, the data encoded according to a predetermined scheme, comprising: reading the encoded data from the nonvolatile memory array to obtain a plurality of bits; obtaining likelihood information regarding the plurality of bits; and calculating output likelihood values using the predetermined scheme, the output likelihood values calculated from the plurality of bits and the likelihood information, wherein obtaining likelihood information regarding the plurality of bits includes reading the encoded data with a resolution that resolves more read states than the number of program states used to program the encoded data.