Detection of errors in the results of turbo decoding is performed while decoding is being repeated. If absence of errors is detected, the results of decoding are output, even though repetition of the decoding operation is in progress, and further decoding is discontinued. Further, the number of times errors are detected in decoded results when decoding has been performed a set number of times is monitored and the decoding operation is executed again if the number of times errors are detected is equal to or less than a set value. Further, one of first and second decoded results output from first and second elementary decoders that construct a turbo decoder is selected as appropriate and is then output.