on is similar, but compression first requires arranging the input symbols into sequences of predefined size (e.g., bytes for binary data). As Fig. 9.3. illustrates, the compression/decompression apparatus is completed with a control subsystem ensuring a certain number of generic functions, including synchronization between the input symbol or codewords and the memory. Assigning individual codewords to each source symbol, in a way that is uniquely decodable, corresponds to what is called lossless compression. The idea conveyed by this adjective is that no information is lost through the compression. Assuming that the compressed source remains unaltered by storage or transmission conditions, the reverse operation of code decompression results in a perfect restitution of the original symbol sequence, with no alteration or error. In contrast, lossy compression algorithms cause some information loss, which translates into errors upon decompression. This information loss, and the restitution errors, is sufficiently minor to remain unnoticed, as in a sound track or a movie picture. Such lossy compression algorithms are inherently not applicable to data files, where absolute exactness is a prerequisite, as in any text document (press, literature, technical) or tabulated data (services, finance, banking, records, computer programs). Block codes So far in this chapter, have described different codes with either fixed-length or variable- length codewords. In this section, we shall consider yet another coding strategy, which consists in encoding the symbols by blocks. The result is a block code, a generic term, which applies to any code that manipulates groups of codewords, either by concatenation or by the attribution of new codewords for specific groups of source symbols. Most generally, block codes can be attributed different "sub-blocks" or fields. For instance, a given field can be reserved for the payload (the sequence of codewords to be transmitted) and another field to the overhead (the information describing how to 