### Error

An error is a situation that occurs the output data does not equate with the input data. During communication, digital indicators encounter noise that can possibly initiate errors in the binary bits moving from one system to another. This means a 0 bit may be altered to 1, or a 1 bit may be altered to 0.

Error *detection* is the discovery of errors, resulting from noise or other deficiencies, while in transit from the transmitter to the receiver.

Error *correction* is the discovery of errors, as well as the rehabilitation of the original, error-free data.

### Error Detecting Codes

Whenever a message is communicated, it may get jumbled by noise, or data may get altered. To prevent this, error-detecting codes are utilised. These are data added to a given digital message to aid us in identifying whether any error appeared during transfer of the message.

One simple technique utilised for the purpose of error detection is the **application of redundancy bits**, whereby bits are added in order to enable the discovery of errors.

Other popular approaches for error detection are:

**Simple Parity Check**- Chunks of data from the source undergo a check bit or parity bit maker system, where a parity of:
- 1 is added if it has an odd number of 1’s, and
- 0 is added if it has an even number of 1’s
- The system makes the total number of 1’s even, which is why it is referred to as even parity checking.

**Two-dimensional Parity Check**- Parity check bits are computed for each row, and then computed for all columns. Afterwards, both are transmitted along with the data. These computed parity check bits for both rows and columns are then compared with the parity bits computed on the received data.

**Checksum**- In the checksum error detection system, the data is separated into sections for each bit.
- On the sender’s end, the sections are added using 1’s aggregate arithmetic to get the sum. The sum is then aggregated to get the checksum.
- The checksum section is sent along with the standard data sections.
- On the receiver’s end, all received sections are added using 1’s aggregate arithmetic to get the sum. This sum is then likewise aggregated.
- If the result is zero, the received data is accepted; otherwise, the received data is rejected.

**Cyclic Redundancy Check (CRC)**- Unlike the checksum system, which is grounded in addition, CRC is based on binary division.
- In CRC, an arrangement of repetitious bits (referred to as cyclic redundancy check bits) are attached to the end of data unit, so that the emerging data unit becomes accurately divisible by another prearranged binary number.
- On the receiving end, the arriving data unit is divided by the same number. If at this stage there is no remainder, the data unit is taken to be accurate, and is consequently accepted.
- A remainder specifies that the data unit has been impaired in transit, and as such must be declined.

### Error Correcting Codes

Along with error-detecting code, some data can be transmitted in order to examine and distinguish the original message from the fraudulent message that was received. This is referred to as an error-correcting code. Error-*correcting* codes also utilise the same strategy as error-*detecting* codes, but additionally diagnose the exact position of the corrupt bit.

In error-correcting codes, the parity check has a mechanism for identifying errors, along with an advanced system to identify the corrupt bit location. Once the corrupt bit is tracked down, its value is reverted (from 0 to 1 or 1 to 0) to get the original message.

### Application

Error detection and error correction schemes are used in the following transmissions:

- Internet
- Deep-space telecommunications
- Satellite broadcasting
- Data storage
- Error-correcting memory