A data storage system includes an encoder subsystem comprising an error
correction code encoder, a modulation encoder, and a precoder, and a
decoder subsystem similarly comprising a detector, an inverse precoder, a
channel decoder, and an error correction code decoder. The error
correction encoder applies an error correction code to the incoming user
bit stream, and the modulation encoder applies so-called modulation or
constrained coding to the error correction coded bit stream. The precoder
applies so-called precoding to the modulation encoded bit stream.
However, this precoding is applied to selected portions of the bit stream
only. There can also be a permutation step where the bit sequence is
permuted after the modulation encoder before precoding is applied by the
precoder. The decoder subsystem operates in the inverse manner.