An error correction circuit, comprising: a detector for creating a decoding target data string from input signals and detecting a likelihood of each bit of the decoding target data string; an error candidate extractor for receiving the likelihood of each bit and creating an error candidate table for storing bit positions of bits for which likelihood is a predetermined threshold or less as selected error candidates in order of likelihood, wherein the error candidate extractor comprises a threshold judgment section for comparing a likelihood of each bit of the decoding target data string with a predetermined threshold, and extracting bit positions of bits for which the likelihood is the predetermined threshold or less; and a higher candidate selection section for creating the error candidate table for storing the extracted bit positions of the bits as the selected error candidates wherein the higher candidate selection section is configured to store the bit positions, of which the absolute values of the likelihood are the same and the bit positions are continuous, into the error candidate table as one selected error candidate; and a correction circuit for correcting an error of the decoding target data string and outputting corrected decoding target data, wherein the correction circuit is configured when judging that the correction has failed to select several error candidates from the error candidate table and create a new decoding target data string by flipping the bits in the decoding target data string corresponding to the selected several error candidates. a detector for creating a decoding target data string from input signals and detecting a likelihood of each bit of the decoding target data string; an error candidate extractor for receiving the likelihood of each bit and creating an error candidate table for storing bit positions of bits for which likelihood is a predetermined threshold or less as selected error candidates in order of likelihood, wherein the error candidate extractor comprises a threshold judgment section for comparing a likelihood of each bit of the decoding target data string with a predetermined threshold, and extracting bit positions of bits for which the likelihood is the predetermined threshold or less; and a higher candidate selection section for creating the error candidate table for storing the extracted bit positions of the bits as the selected error candidates wherein the higher candidate selection section is configured to store the bit positions, of which the absolute values of the likelihood are the same and the bit positions are continuous, into the error candidate table as one selected error candidate; and a threshold judgment section for comparing a likelihood of each bit of the decoding target data string with a predetermined threshold, and extracting bit positions of bits for which the likelihood is the predetermined threshold or less; and a higher candidate selection section for creating the error candidate table for storing the extracted bit positions of the bits as the selected error candidates wherein the higher candidate selection section is configured to store the bit positions, of which the absolute values of the likelihood are the same and the bit positions are continuous, into the error candidate table as one selected error candidate; wherein the higher candidate selection section is configured to store the bit positions, of which the absolute values of the likelihood are the same and the bit positions are continuous, into the error candidate table as one selected error candidate; a correction circuit for correcting an error of the decoding target data string and outputting corrected decoding target data, wherein the correction circuit is configured when judging that the correction has failed to select several error candidates from the error candidate table and create a new decoding target data string by flipping the bits in the decoding target data string corresponding to the selected several error candidates. to select several error candidates from the error candidate table and create a new decoding target data string by flipping the bits in the decoding target data string corresponding to the selected several error candidates.