Program Kode Hamming dengan C

Halo semuanya! Berjumpa dengan Miniblog dari Inzaghi's Blog! Untuk mendeteksi adanya Kesalahan (Error) pada Data, kita memerlukan yang namanya Kode Hamming. Inilah Program Kode Hamming dengan Bahasa C.

Sumber : Daniheri.blogspot.com, Finnasuroso.wordpress.com, dan Thecrazyprogrammer.com

Untuk Software-nya, Anda bisa menggunakan CodeBlocks, Dev C++, ataupun VS Code. Bahkan Anda juga bisa menggunakan Online Compiler yang ada di Internet seperti ProgramizOneCompilerOnlineGDB, dll.

Kode Hamming (Hamming Code) merupakan sistem yang dikembangkan dari error correction code yang mengunakan parity bit, selain Hamming Code banyak juga sistem lain yang lebih efisien dalam error correction code pada data yang terdiri dari banyak bit. Karena pengecekan secara parity ini juga maka kita dapat mengecek kode-kode yang ada. Linear Error-Correction Code memiliki berbagai keterbatasan kesalahan. Pada Hamming Code, kesalahan yang dapat diketahui hanya 1 (Satu) buah sedangkan yang dapat dideteksi adalah 2 (Dua) buah.

Data Bit
Check Bit
2
2
4
3
8
4
16
5
32
6
64
7
128
8
256
9

Terlebih pada transmisi data serial dengan kecepatan tinggi dan kualitas jalur transmisi yang rendah Kesalahan (Error) sangat mungkin terjadi, ukuran banyaknya bit error dalam blok data disebut sebagai Bit Error Rate (BER).Terdapat toleransi kesalahan bit dalam sistem transmisi data, dan batasan nilai BERdalam satu kelompok data 105 bit.

Dalam penanganan kesalahan (error handling) bit terkirim tahapan utama dalam penerimaan data adalah deteksi kesalahan bit terkirim, selanjutnya dilakukan koreksi terhadap Kesalahan (Error). Perbaikan data bisa dilakukan oleh penerima atau pengirim melalui permintaan pengiriman ulang data, permintaan ini melalui sinyal NAK dari penerima ke pengirim.

Seperti telah dijelaskan sebelumnya bahwa proses deteksi kesalahan melalui bit yang ditambahkan (redundant bit) ke dalam data, dengan metode pengkodean tersebut dapat ditentukan kesalahan bitnya. Sistem pengkodean yang lain yang dapat digunakan dalam komunikasi data adalah kode Hamming.

Di sini Anda akan mendapatkan program untuk kode hamming dalam C dan C++. Kode Hamming adalah metode deteksi kesalahan dan koreksi kesalahan yang populer dalam komunikasi data. Kode Hamming hanya dapat mendeteksi kesalahan 2 bit dan memperbaiki kesalahan satu bit yang berarti tidak dapat memperbaiki kesalahan burst jika mungkin terjadi saat transmisi data.

Kode Hamming menggunakan bit redundan (bit ekstra) yang dihitung menurut rumus di bawah ini : -

Dimana r adalah jumlah bit redundan yang dibutuhkan dan m adalah jumlah bit data.

R dihitung dengan menempatkan r = 1, 2, 3, 4, … sampai persamaan di atas menjadi benar.

R1 bit ditambahkan pada posisi 20

R2 bit ditambahkan pada posisi 21

R3 bit ditambahkan pada posisi 22 dan seterusnya.

Bit redundan ini kemudian ditambahkan ke data asli untuk perhitungan kesalahan di ujung penerima.

Di ujung penerima dengan bantuan paritas genap (umumnya) posisi bit yang salah diidentifikasi dan karena data dalam biner, kami melengkapi posisi bit yang salah untuk mengoreksi data yang diterima.

Indeks paritas masing-masing dihitung untuk r1, r2, r3, r4 dan seterusnya.

[Untuk membaca selengkapnya, silakan lihat di sini (Inzaghi's Blog Legacy).]

Dan inilah Program mendeteksi Kesalahan (Error) dengan menggunakan Kode Hamming dalam Bahasa C :

#include<stdio.h>
 
void main() {
    int data[10];
    int dataatrec[10],c,c1,c2,c3,i;
 
    printf("Enter 4 bits of data one by one\n");
    scanf("%d",&data[0]);
    scanf("%d",&data[1]);
    scanf("%d",&data[2]);
    scanf("%d",&data[4]);
 
    //Calculation of even parity
    data[6]=data[0]^data[2]^data[4];
    data[5]=data[0]^data[1]^data[4];
    data[3]=data[0]^data[1]^data[2];
 
    printf("\nEncoded data is\n");
    for(i=0;i<7;i++)
        printf("%d",data[i]);
 
    printf("\n\nEnter received data bits one by one\n");
    for(i=0;i<7;i++)
        scanf("%d",&dataatrec[i]);
 
    c1=dataatrec[6]^dataatrec[4]^dataatrec[2]^dataatrec[0];
    c2=dataatrec[5]^dataatrec[4]^dataatrec[1]^dataatrec[0];
    c3=dataatrec[3]^dataatrec[2]^dataatrec[1]^dataatrec[0];
    c=c3*4+c2*2+c1;
 
    if(c==0) {
    printf("\nNo error while transmission of data\n");
    }
    else {
    printf("\nError on position %d",c);
    printf("\nData sent : ");
        for(i=0;i<7;i++)
        printf("%d",data[i]);
           
    printf("\nData received : ");
        for(i=0;i<7;i++)
        printf("%d",dataatrec[i]);
    printf("\nCorrect message is\n");
 
    //if errorneous bit is 0 we complement it else vice versa
        if(dataatrec[7-c]==0)
        dataatrec[7-c]=1;
        else
        dataatrec[7-c]=0;
        for (i=0;i<7;i++) {
        printf("%d",dataatrec[i]);
        }
    }
}

Input dan Output (Data yang Benar) :

Enter 4 bits of data one by one
1
0
1
0

Encoded data is
1010010

Input dan Output (Data yang Salah) :

Enter received data bits one by one
1
0
1
0
0
1
0

No error while transmission of data


Mohon maaf apabila ada kesalahan sedikitpun pada Kode Program ini.

Terima Kasih 😀😊😘👌👍 :)

Post a Comment

Previous Post Next Post