-Now that we understand how repetition codes work, we are going to generalize our approach and talk about binary block codes. A binary block code using n and k parameters gets on input k information bits from which codewords of n bits each are generated. In the case of systematic block codes, each codeword can be seen as the concatenation of the k information bits which were encoded to which we add n-k parity bits. These n-k parity bits are directly calculated as a function of the k information bits. Here we have n encoded bits in total. To better illustrate this, let us go back to the example we used in the previous sequence of 3-repetition codes. With this code, we have, on encoder input, one bit, so k=1. From this bit we calculate three-bit codewords, so here n=3. Each codeword can be seen as the information bit to which is added two other bits which are merely the repetition of the first codeword twice. Based on this, we can define the code output. The R rate equals the size of information bits on input, k, over the size of information on output, n. As n is always greater than k, the rate is always less than one. To go back to our example of a 3-repetition code, our rate will be 1/3. We saw that the bit rate was multiplied by n/k, or here 1/R. By following the same reasoning as in the previous sequence, we can show that the occupied bandwidth is multiplied by n/k or 1/R. In other words, the occupied bandwidth is inversely proportional to the rate. We can then define the error detection capability as the maximal number of errors that can be detected in a codeword. A codeword can be detected as erroneous when it does not belong to the set of valid codewords. Similarly, we also talk of the correcting capability of a code, or Cc. It is the maximal number of bits which can be corrected in a codeword. At this stage, let us assume that the correcting capability equals half of the detection capability. Let us sum up the different parameters involved in picking a channel encoder. A channel encoder is characterized first by its rate R, its error detection and correcting capabilities, Cc or Cd, but also, remember this, by the complexity of its encoder and decoder. We can easily imagine codes with very high detection or correcting capabilities and a very low rate, in other words, with a low occupied bandwidth, but which are difficult or even impossible to implement in real life. For a fixed k value, if we decrease the rate, so if we increase n, and thus increase the number of parity bits which will be added, the correcting capability will increase as well. However, the occupied bandwidth will also increase since the occupied bandwidth is inversely proportional to the rate. As you can see, we need to compromise between the correcting capability and the code rate.