150 BELL SYSTEM TECHNICAL JOURNAL 



symbol increases; and the risk of a double error, which would pass unde- 

 tected, also increases. For example, if /> « 1 is the probability of any error, 

 then for ;/ so large as \/p, the probability of a correct symbol is approxi- 

 mately l/e = 0.3679 . . . , while a double error has probability l/2e = 



0.1839 



The type of check used above to determine whether or not the symbol 

 has any single error will be used throughout the paper and will be called 

 a parity check. The above was an even parity check; had we used an odd 

 number of I's to determine the setting of the check position it would have 

 been an odd parity check. Furthermore, a parity check need not always 

 involve all the positions of the symbol but may be a check over selected posi- 

 tions only. 



3. Single Error Correcting Codes 



To construct a single error correcting code we first assign m of the n avail- 

 able positions as information positions. We shall regard the m as fixed, but 

 the specific positions are left to a later determination. We next assign the k 

 remaining positions as check positions. The values in these k positions are 

 to be determined in the encoding process by even parity checks over selected 

 information positions. 



Let us imagine for the moment that we have received a code symbol, with 

 or without an error. Let us apply the k parity checks, in order, and for each 

 time the parity check assigns the value observed in its check position we 

 write a 0, while for each time the assigned and observed values disagree 

 we write a \. When written from right to left in a line this sequence of k O's 

 and I's (to be distinguished from the values assigned by the parity checks) 

 may be regarded as a binary number and will be called the checking number. 

 We shall require that this checking number give the position of any single 

 error, with the zero value meaning no error in the symbol. Thus the check 

 number must describe m -\- k -\- \ different things, so that 



2" >m+k+\ 



is a condition on k. Writing n = m -\- k we find 



2" 



2'" < 



n -\- 1 



Using this inequality we may calculate Table T, which gives the maximum 

 m for a given w, or, what is the same thing, the minimum ;/ for a given m. 



We now determine the positions over which each of the various parity 

 checks is to be applied. The checking number is obtained digit by digit, 

 from right to left, by applying the parity checks in order and writing down 

 the corresponding or 1 as the case may be. Since the checking number is 



