A technique of reducing the bit rate required for the transmission and/or storage of digital data by exploiting the redundancy in the original information content, such that the output after decoding is not identical to the original input before coding.