Anda di halaman 1dari 5

Code hamming (Kode Hamming)

Kode perbaikan error yang paling sederhana adalah kode Hamming yang diciptakana oleh
Prof. Wesley Richard Hamming di laboratorium bell.
Dengan tiga buah lingkaran, yang berpotongan, terdapat tujuh kompartemen. Kita akan
memberikan 4 buah bit data ke kompartemen yang terletak di tengah. kompartemen sisanya diisi
dengan apa yang kita sebut bit paritas. Setiap bit paritas dipilih sehingga bilangan 1 dalam
lingkaran berjumlah genap . Jadi, karena lingkaran A terdiri dari tiga buah bilangan 1, maka bit
paritas dalam lingkaran itu disetel menjadi 1. sekarang, apabila suatu error mengubah salah satu
bit data, maka error itu akan dengan mudah ditemukan.
Dengan memeriksa bit paritas, cacat-cacat dapat ditemukan pada lingkaran A dan C namun
tidak pada lingkaran B. hanya salah satu dari kompartemen berada pada A dan C namun tidak pada
B. karena itu error dapat dikoreksi dengan mengubah bit tersebut. Untuk menjelaskan kosep
tersebut, kita akan membuat kode yang dapat mendeteksi dan mengoreksi error bit tunggal di
dalam word 8 bit.
Untuk memulainya, kita tentukan panjang kode seharusnya. Sehubungan dengan gambar 1,
logika perbandingan menerimanya sebagai input dua nillai K-Bit. Perbandingan bit demi bit
dilakukan dengan memperhatikan exclusive-or kedua input itu. Hasilnya disebut sebagai sindrom
word. Jadi sindrom adalah 0 atau 1apabila terdapat atau tidak cocok data posisi bit kedua input
tersebut.
Dengan demikian sindron word mempunyai lebar K dan memiliki range 2
diantara 0 dan 2

yang berada

-1. Nilai 0 berarti bahwa tidak terdeteksi error, yang menyisakan 2

buah nilai untuk mengindikasikan bit mana yang mengalami error, bila terdapat error. Sekarang,
karena suatu error terjadi pada sembarang M bit data atau K bit check, maka kita harus memiliki.
2
-1 > M + K.
Persamaan ini memberikan jumlah bit yang diperlukan untuk mengoreksi error bit tunggal
didalam sebuah word yang berisi M buah bit data. Pada table 1 merupakan daftar bit-bit cek yang
diperlukan untuk bermacam-macam panjang word data.

Pengkoreksian,
tunggal

Kesalahan

Pengkoreksian Kesalahan tunggal


Pendeteksian kesalahan ganda

Bit-bit Data

Bit-bit Cek

%Peningkatan

Bit-bit Cek

%Peningkatan

50

62,5

16

31,25

37,5

32

18,75

21,875

64

10,94

12,5

128

6,25

7,03

256

3,25

10

3,91

Tabel 1.
Kenaikan panjang word dengan koreksi kesalahan
Posisi bit Nomor
Bit cek Bit Data
12
11
10
9
8
7
6
5
4
3
2
1

1100
1011
1010
1001
0111
0110
0101
0100
0011
0010
0001

C8

C4
C2
C1

M8
M7
M6
M5
M4
M3
M2
M1

Gambar 3. Layout Bit-bit data dan Bit-bit cek


Dari table, kita akan ketahui bahwa suatu word 8 bit data memerlukan 4 bit chek. Untuk
mudahnya kita akan menurunkan sindrom 4 bit dengan memakai karakteristik berikut ini :

Jika sindrom semuanya berisi 0, maka tidak terdapat error.

Jika sindrom berisi sebuah dan hanya sebuah bityang disetel ke 1, makatelah terjadi suatu error
pada salah satu dari 4 buah bit check.

Jika sindrom berisi lebih dari sebuah bit disetel ke 1, maka nilai numeric sindrom mengindikasikan
posisi bit data yang mengalami error. Bit data ini diinversikan untuk keperluan koreksi.

Untuk mencapai karakteristik ini, maka bit data dan bit cek diatur menjadi word 12bit seperti yang dapat dilihat pada gambar 3. posisi-posisi bit diberi nomor dari 1 hingga 12. posisiposisi bit yang memiliki bilangan posisinya pangkat 2 tersebut dikenal sebagai bit-bit check. Bit-bit
check ini dihitung sebagai berikut, dengan symbol
C1
C2
C4
C8

=
=
=
=

M1
M1
M2
M5

M2
M3
M3
M6

M4 M5
M4 M6
M4
M8
M7 M8

menandakan operasi exclusive-or :

M7
M7

Setiap bit cek beroperasi pada setiap bit data yang nomor posisinya berisi bilangan 1 pada
kolomnya. Jadi, posisi-posisi bit data 3, 5, 7, 9 dan 11semuanya berisi suku 2
; posisi-posisi bit
3, 6, 7, 10, dan 11 semuanya berisi suku 2
suku 2

; Posisi-posisi bit 5, 6, 7, dan 12 seluruhnya berisi

; dan posisi-posisi bit 9, 10, 11, dan 12 berisi suku 2

bit n diperiksa oleh bit-bit C

sehingga

; Ditinjau dari sisi lain, posisi

= n. Misalnya, posisi bit 7 diperiksa oleh bit-bit

yang berada pada posisi 4, 2, dan 1; dan 7 = 4 + 2 + 1.


Contoh Kasus !
Anggap bahwa word input 8-bit sama dengan 00111001. dengan bit data M1 berada pada
posisi paling kanan. Maka perhitungannya adalah sebagai berikut :
C1= 1
0
1
1
0= 1
C2= 1

0 =1

C4= 0

= 0

C8= 1

= 0

Misalkan sekarang bit data 3 mengalami error dan berubah dari 0 menjadi 1. ketika bit-bit check
dikalkulasi ulang, kita akan memperoleh
C1= 1
0
C2= 1

0= 1

1= 0

C4= 0

= 1

C8= 1

= 0

Ketika bit cek yang baru dibandingkan dengan bit cek yang lama, word sindrom dibentuk :
C8
0

C4
1
0

C2
1
0

C1
1
0

Hasilnya adalah 0110, yang menandakan bahwa posisi bit 6 yang berisi bit data 3
berisi error.
Posisi Bit Bit Cek
12
11
10
9
8
7
6
5
4
3
2
1

Bit Data
M8
M7
M6
M5

Word tersimpan
sebagai
11000
10110
10101
10011

Word
sebagai
01100
01011
11010
11001

M4
M3
M2

01111
01000
01010

10111
10110
00101

M1

00111

10011

tersimpan

C8

C4
C2
C1
Gambar 4. Penurunan bit check
Bit-bit data dan check ditempatkan dengan tepat pada word 12-bit. Membuatlah layout

nomor

posisi

masing-masing bit

di dalam kolom-kolom,

bilangan

1 pada setiap baris

mengindikasikan bit-bit data yang diperiksa oleh bit check bagi baris itu karena hasilnya hanya
dipengaruhi oleh bilangan-bilangan 1, maka hanya kolom-kolom yang berisi bilangan 1 di cetak
tebal dan digaris bawahi untuk maksud identifikasi.
Kemudian Bit-bit check dapat dihitung pada sepanjang barisnya. Hasilnya ditunjukkan bagi
bit-bit data orisinal dan bit-bit data yang mengandung error.
Kode yang baru diterangkan diatas dikenal sebagai kode single-error-correcting (SEC). Umumnya,
memori semikonduktor dilengakapi dengan kode single-error-correcting, double error-detecting
(SEC-DEC). seperti ditunjukkan pada table 1. kode-kode tersebut menurunkan 1 bit tambahan
dibandingkan dengan kode-kode SEC.
Gambar 5. mengilustrasikan cara kerja kode tersebut, juga yang merupakan word data 4
bit. Dari gambar itu diketahui bahwa bila terjadi dua error (gambar 5. c) maka prosedur
pemeriksaan akan tersesat

(d), dan memperburuk masalah dengan terjadinya error ketiga

(e).untuk mengatasi masalah ini, maka ditambahkan bit kedelapan kepada set ini sehingga jumlah
kseluruhan bilangan 1 di dalam diagram menjadi genap. Bit paritas tambahan akan dapat
menangkap error (f).
Errorcorrecting code akan meningkatkan reliabilitas memori dengan resiko terjadinya
penambahan kompleksitas. Dengan organisasi satu bit perkeping, umunya kode SEC-DEC dianggap
memadai. Misalnya implementasi IBM 30xx menggunakan kode SEC-DEC 8-bit bagi ke -64 bit data di
dalam memori utama-nya. Sehingga ukuran memori utama sebenarnya menjadi 12% lebih besar di
banding dengan yang di ketahui oleh pengguna computer-komputer VAX menggunakan SEC-DEC 7 bit

bagi ke 32 bit memorinya, sehingga terdapat overhead sebesar 22%. 1. yang ditunjukkan kode
seperti itu memerlukan satu bit tambahan bandingkan dengan kode SEC.