A method of encoding data symbols in accordance with a BCH code to obtain a code word having a code word order in which parity symbols for the code word are interposed between a first portion of the data symbols and a second portion of the data symbols, the method employing use of a shift register and comprising the steps of:
- sequentially providing the data symbols to the shift register in a predetermined order in which the second portion precedes the first portion and zero data symbols are located in between the second portion and the first portion;
- initially modifying each of the data symbols and zero data symbols as each is provided to the shift register based upon at least one of data symbols and zero data symbols previously provided to the shift register;
- sequentially shifting the data symbols and zero data symbols, after initial modification, through the shift register in accordance with the predetermined order, and further modifying each of the data symbols and zero data symbols as each is shifted through the shift register based upon at least one of data symbols and zero data symbols later provided to the shift register to produce the parity symbols;
- and
- positioning the parity symbols with respect to the data symbols in accordance with the code word order so that the parity symbols are interposed between the first portion and the second portion to obtain the code word.