The Bell System Technical Journal 



Vol. XXVI April, 1950 No. 2 



Copyright, 1950, American Telephone and Telegraph Company 



Error Detecting and Error Correcting Codes 



By R. W. HAMMING 



1. Introduction 



THE author was led to the study given in this paper from a considera- 

 tion of large scale computing machines in which a large number of 

 operations must be performed without a single error in the end result. This 

 problem of "doing things right" on a large scale is not essentially new; in a 

 telephone central office, for example, a very large number of operations are 

 performed while the errors leading to wrong numbers are kept well under 

 control, though they have not been completely eliminated. This has been 

 achieved, in part, through the use of self-checking circuits. The occasional 

 failure that escapes routine checking is still detected by the customer and 

 will, if it persists, result in customer complaint, while if it is transient it will 

 produce only occasional wrong numbers. At the same time the rest of the 

 central office functions satisfactorily. In a digital computer, on the other 

 hand, a single failure usually means the complete failure, in the sense that 

 if it is detected no more computing can be done until the failure is located 

 and corrected, while if it escapes detection then it invalidates all subsequent 

 operations of the machine. Put in other words, in a telephone central office 

 there are a number of parallel paths which are more or less independent of 

 each other; in a digital machine there is usually a single long path which 

 passes through the same piece of equipment many, many times before the 

 answer is obtained. 



In transmitting information from one place to another digital machines 

 use codes which are simply sets of symbols to which meanings or values are 

 attached. Examples of codes which were designed to detect isolated errors 

 are numerous; among them are the highly developed 2 out of 5 codes used 

 extensively in common control switching systems and in the Bell Relay 



147 



