Longer Computations Made Errors Harder to Ignore

In 1946, Richard Hamming moved from Los Alamos to Bell Telephone Laboratories in Murray Hill, New Jersey, joining the mathematics research group. Computers repeatedly fed input numbers into calculations; a single error in a relay, input device or transmission line could alter the subsequent chain of computation. A wrong connection in a telephone exchange mainly affected one call, whereas a long numerical computation continually reused previous results in the same chain. An operator checking the final answer was therefore insufficient.

Machines already performed error checks, but detecting a problem often required stopping for intervention. Hamming asked whether adding a few systematically arranged digits to data could let a machine locate the error itself. In April 1950, he published Error Detecting and Error Correcting Codes in the Bell System Technical Journal. This article uses publication as its milestone; the paper described research developed earlier and does not imply that all devices only began using checks that year.

References: [1] [3]

Why One Parity Bit Was Insufficient

The simplest method was parity checking. A sender added one bit so that the total number of ones was even; the receiver counted again. If one bit changed from zero to one or one to zero, parity changed. The rule did not require keeping another complete copy, so overhead was small and circuits could implement it readily.

One check, however, only showed that a group violated the rule, not which bit was wrong. Two simultaneous flips could restore normal parity. Repeating every bit three times and taking a majority vote could correct some errors but substantially increased storage and transmission costs. Hamming's improvement made checks overlap so their combined results identified a position.

References: [1] [2]

Turning Check Results into a Position

In a seven-bit group containing four information bits, the other three supplied checks. Each bit position participated in a unique combination of checks. Three receiver check results had eight possible combinations: one indicated no single-bit error detected, and seven corresponded to the seven positions. The essential requirement was not where parity bits appeared on paper, but that no two positions had identical check combinations.

In a common numbering scheme, parity bits occupy positions 1, 2 and 4, and information bits positions 3, 5, 6 and 7. The first check covers positions 1, 3, 5 and 7; the second 2, 3, 6 and 7; the third 4, 5, 6 and 7. If only position 5 flips, the first and third checks fail while the second passes. Arranging results with weights 4, 2 and 1 gives binary 101, identifying position 5.

This is a worked example of the check structure: once located, the bit can be inverted to correct it. The same procedure handles errors in parity bits themselves. The receiver need not ask the sender for the original, but must know the agreed grouping and satisfy the single-bit-error assumption.

References: [1] [2]

Correcting One Bit and Detecting Two

Hamming also discussed reliability through the number of positions differing between codewords, a measure later widely called Hamming distance. Sufficient separation between valid codewords allowed a disturbed result to remain closest to a unique original. A seven-bit single-error-correcting code could correct any one-bit error, but if two bits changed, blindly applying the single-error rule could corrupt a third bit.

Adding another parity bit covering the whole group produced an eight-bit scheme that could distinguish this case. Within its design limits, the decoder could correct a single-bit error and flag a double-bit error. Correction and detection were distinct capabilities; extra checks did not provide unlimited protection against every number or pattern of errors.

References: [1] [2]

From Combinatorial Rules to Reliable Machines

Hamming and Bernard Holbrook's jointly named Error-detecting and Correcting System patent was filed in 1950 and granted in 1951. It used relays, storage and checking circuits to explain the connections among encoding, checking and reversing errors. The paper supplied an analyzable structure, while the patent showed signal paths needed for implementation, recording the link between research and engineering.

Computer memories and other systems subsequently adopted Hamming codes and extensions, making modest redundancy part of reliability. The point was not to eliminate component failures, but to acknowledge their possibility and reduce recomputation, retransmission and manual maintenance under specified conditions. More complex codes continued to address burst errors, larger code groups and greater efficiency. The single-error-correction structure in the 1950 paper was a clear, testable step along that technological path.

References: [2] [3]