### Information Redundancy

**Information Redundancy**

Information can be defined a group of bits organised in a well defined manner. In real time system large amount is information has to be transferred in a very short time in a precisely secure manner. There are many casualties during the transfer of information. For example the information can be corrupted due to the interference with another stream of bits or can be duplicated. Basically there are many types, of these let us discuss four most important types.

**Duplication**

The duplication is process of creating more number of similar bits of the information and passing them along with the stream that was actually sent. So, at the receiver end the data received will not meet the requirements. For example, consider 11001010 as the stream of bits forwarded by the user and in the middle of the transmission the last bits 0 were duplicated and sent as 110010100, leads to an invalid stream of bits. This is duplication of the bits which will result in data loss and causes security issues.

**Parity Bits**

A **parity bit **is a bit that is added to ensure that the number of bits with value of one in a given set of bits is always even or odd. Parity bits are used as the simplest error detecting code. As for binary digits, there are two variants of parity bits: **even parity bit **and **odd parity bit**. An even parity bit is set to 1 if the number of ones in a given set of bits is odd (making the *total *number of ones, including the parity bit, even). An odd parity bit is set to 1 if the number of ones in a given set of bits is even (making the *total *number of ones, including the parity bit, odd). Even parity is actually a special case of a cyclic redundancy check (CRC), where the 1-bit CRC is generated by the polynomial *x*+1. If the parity bit is present but not used, it may be referred to as **mark parity**, where the parity bit is always 1, or as **space parity**, where the bit is always 0. If an odd number of bits (including the parity bit) are changed in transmission of a set of bits then parity bit will be incorrect and will thus indicate that an error in transmission has occurred.

Therefore, parity bit is an error detecting code, but is not an error correcting code as there is no way to determine which particular bit is corrupted. The data must be discarded entirely, and re-transmitted from scratch. On a noisy transmission medium a successful transmission could take a long time, or even never occur.

Parity does have the advantage, however, that it is about the best possible code that uses only a single bit of space and it requires only a number of XOR gates to generate. Parity bit checking is used often for transmission of ASCII characters, since they have 7 bits and the 8th bit can conveniently be used as a parity bit. The duplication problem can be eradicated by the use of the parity bits. Here in this parity bit method, it will count the number of 0's and 1's in the stream of the information and will notify the receiver about the number of 0's and 1's. So, consider the case of 1001 as information bit stream, now during transmission, if the transmission is interrupted and modified as 10010. Then this can be detected using the parity bit.

A wants to transmit : 1001

A computes even parity value: 1^0^0^1 = 0

A sends: 10010

*** TRANSMISSION ERROR ***

B receives: 1001**1**

B computes overall parity: 1^0^0^1^1 = 1

B reports incorrect transmission after observing unexpected odd result. The drawback of this method is that it can't identify the error if two bits of same type are modified i.e., consider 1001 and 1100, they both will result in same parity bit and so this can't be identified.

Checksum

A **checksum **or **hash sum **is a fixed-size datum computed from an arbitrary block of digital data for the purpose of detecting accidental errors that may have been introduced during its transmission or storage. The integrity of the data can be checked at any later time by recomputing the checksum and comparing it with the stored one. If the checksums do not match, the data was certainly altered. The procedure that yields the checksum from the data is called a **checksum function **or **checksum algorithm**. A good checksum algorithm will yield a different result with high probability when the data is accidentally corrupted; if the checksums match, the data is very likely to be free of accidental errors. There are many types of Checksum algorithms, of these three are important, namely single precision, double precision and honey well. Let us see each in brief.

**Single Precision**:

Let us consider 1011 1000 1001 1000 as the information stream. Here in this single precision algorithm we add all these in a 4 bit passion as shown below.

1011

1000

1001

1000

After adding this we have to discard the carry we obtain and send the check sum along with the data and on the recei

ver side also, the should obtain the same checksum else, it is certain that the data have been corrupted.

**Double Precision:**

This is similar to the single precision as described above. The only difference between the single precision and the double precision is that, in double precision we calculate the checksum and we don't discard the carry and we send the carry along with checksum and the same is calculated at the receiver's side and expected to get the same checksum with same carry.

**Honey well:**

In case of this honey well method we add the information bits, but here in 8 bits which will generate a 8 or 9 bit checksum which will be forwarded to the receiver. The format is as specified.

1011 1000

1001 1000

-------------

1101 0000

-------------

This is beneficial in case of the large amount of the information to be transferred in a secure manner. There are many other checksum functions like Parity byte or parity word, Modular sum, Position-dependent checksums etc.

**AN CODES ( Arithmetic codes):**

There are many AN codes for preventing the information redundancy during the transmission. Let us discuss some of the major AN codes

**ANCODE x3:**

4 x 3 = 0100 x 3 = 1100

5 x 3 = 0101 x 3 = 1111

9 x 3 = 1001 x 3 = 11101

Similarly many Arithmetic codes can be used to check the information redundancy in the system. Every time an arithmetic code was used by the transmitter, the receiver must be intimated about the code about to be transferred to the transmitter. All these are useful for reducing the information redundancy during the transmission of the information.

**A Special Thanks to Rayabhagi Srikanth for his contribution. (The contents are not checked for its originality)**