 = 4 and that the suffix has a constant length and changes with a periodicity of m = 4. From the above rules and with this example we obtain G(3) = 1.10, G(5) = 01_00 and G(12) = 001_11, for instance (the underscore - being introduced for clarity). Note the prefix rule of 1 preceded by q zero bits is only conventional. We can also define the prefix as 0 preceded by q one bits, which represents the complement of the previous prefix (e.g., G(3) = 0_10, G(5) = 10_00, and G(12) = 110_11). Another convention for the suffix is to take the smallest number of bits for the binary representation of r, which only changes 00 into 0. Thus, we have G(3) = 1-0 instead of 1.00, G(5) = 01-0 instead of 01_00, and SO on. This convention reduces the code length by one bit each time i = km + 1 (k an integer). With their prefix increase by blocks of m and their suffix m periodicity, the Golomb codes are straightforward to generate. Table 10.1 shows the nonoptimized Golomb code for m = 8. Consider next the actual Golomb code, which uses a more complicated rule (b) for defining the suffix. This rule consists of coding the suffix with C = Llog2 m | bits for the first C values of r (with 0 as the leading bit), and with C + 1 bits for the other values (with 1 as the leading bit). Consider, for instance, m = 5. We have C = Llog2 5 = 2. Thus, we have, for the first 15 integers: i = 1, prefix = 01, prefix = 001, etc., suffix = 00, 01, 100, 101, 110, i = 6, suffix : 00, 01, 100, 101, 110, i = 11, = 0, 1, 2, 3, 4 suffix = 00, 01, 100, 101, 110, showing that in each period, the first two suffixes are coded with two bits with a leading 0, and the other suffixes are coded with three bits with a leading 1. We note that the three-bit suffix codes do not correspond to a binary representation of r, unlike with our previous definition. Table 10.1 shows the actual Golomb code corresponding to the case m = 6. We observe that the second definition makes it possible to shorten the length of Coding a number n by n - 1 zeros followed by a one bit is referred