Code Creation
Mark all bit positions that are powers of two as parity bits. (positions 1, 2, 4, 8, 16, 32, 64, etc.) All other bit positions are for the data to be encoded. (positions 3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17, etc.) Each parity bit calculates the parity for some of the bits in the code word. The position of the parity bit determines the sequence of bits that it alternately checks and skips.
Position 1: check 1 bit, skip 1 bit, check 1 bit, skip 1 bit, etc. (1,3,5,7,9,11,13,15,…)
Position 2: check 2 bits, skip 2 bits, check 2 bits, skip 2 bits, etc. (2,3,6,7,10,11,14,15,…)
Position 4: check 4 bits, skip 4 bits, check 4 bits, skip 4 bits, etc. (4,5,6,7,12,13,14,15,20,21,22,23,…)
Position 8: check 8 bits, skip 8 bits, check 8 bits, skip 8 bits, etc. (8-15,24-31,40-47,…)
Position 16: check 16 bits, skip 16 bits, check 16 bits, skip 16 bits, etc. (16-31,48-63,80-95,…)
Position 32: check 32 bits, skip 32 bits, check 32 bits, skip 32 bits, etc. (32-63,96-127,160-191,…)
etc.
Set a parity bit to 1 if the total number of ones in the positions it checks is odd.
Set a parity bit to 0 if the total number of ones in the positions it checks is even.
Example 1
A byte of data: 01010101
Let us number the bits of this character b12, b11, b10, b9, b7, b6, b5, b3, and we will number bits from right to left (dari kanan ke kiri), leaving space for the soon-to-be-added check bits. Now add to these bits the following check bits: c8, c4, c2, and c1. where c8 generate a simple even parity for bits b12, b11, b10, b9 . The check bit c4 will generate a simple even parity for bits b12, b7, b6, b5. Check bit c2 will generate a simple even parity for bits b11, b10, b7, b6, b3. And c1 will generate a simple even parity for bits b11, b9, b7, b5, b3. Note that each bit here is checking different sequence of data bits.
Position 1 checks bits 1,3,5,7,9,11: (check beginning bit from left to right)
0 1 0 1 ? 0 1 0 ? 1 ? (? find value position1 ) shown that this parity error
1 1 0 0 1 (Generate sum of all check bit , the value is 1)
Even parity so set position 1 to a 1: 0 1 0 1 _ 0 1 0 _ 1 _ 1
Position 2 checks bits 2,3,6,7,10,11: (check beginning bit from left to right, put the c1 bit also)
0 1 0 1 _ 0 1 0 _ 1 (? find value position2 ) 1 shown that this parity no error
1 0 0 1 1 (Generate sum of all check bit , the value is 1)
Odd parity so set position 2 to a 1: 0 1 0 1 _ 0 1 0 _ 1 1 1
Position 4 checks bits 4,5,6,7,12:
0 1 0 1 _ 0 1 0 ? 1 1 1
0 0 1 0 (Generate sum of all check bit , the value is 1) shown that this parity no error
Odd parity so set position 4 to a 1: 0 1 0 1 _ 0 1 0 1 1 1 1
Position 8 checks bits 8,9,10,11,12:
0 1 0 1 ? 0 1 0 1 1 1 1
0 1 0 1 (Generate sum of all check bit , the value is 0) shown that this parity error
Even parity so set position 8 to a 0: 0 1 0 1 0 0 1 0 1 1 1 1
Finally we find the code word : 0 1 0 1 0 0 1 0 1 1 1 1
Example 2
Test if these code words are correct, assuming they were created using an even parity Hamming Code . If one is incorrect, indicate what the correct code word should have been. Also, indicate what the original data was.
a. 010101100011 all bit is right
b. 111110001100 bit 11 is wrong, should be 101110001100
Kekurangan si Hamming code ini, satu parity hanya bisa untuk pengecekan 1 bit data tidak bisa lebih dari itu.
