# Hamming code Implementation in Java

Pre-requisite: Hamming code

Hamming code is a set of error-correction codes that can be used to detect and correct the errors that can occur when the data is moved or stored from the sender to the receiver. It is a technique developed by R.W. Hamming for error correction.

Examples:

```Input:
message bit = 0101
r1 r2 m1 r4 m2 m3 m4
0     1  0  1
Output:
Generated codeword :
r1 r2 m1 r4 m2 m3 m4
0  1  0  0  1  0  1

Explanation:
Initially r1, r2, r4 is set to '0'.
r1 = xor of all bits position
which has '1' in its 0th-bit position
r2 = xor of all bits
which has '1' in its 1st-bit position
r3 = xor of all bits
which has '1' in its 2nd-bit position
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Below is the implementation of the Hamming Code:

 `// Java code to implement Hamming Code ` `class` `HammingCode { ` ` `  `    ``// print elements of array ` `    ``static` `void` `print(``int` `ar[]) ` `    ``{ ` `        ``for` `(``int` `i = ``1``; i < ar.length; i++) { ` `            ``System.out.print(ar[i]); ` `        ``} ` `        ``System.out.println(); ` `    ``} ` ` `  `    ``// calculating value of redundant bits ` `    ``static` `int``[] calculation(``int``[] ar, ``int` `r) ` `    ``{ ` `        ``for` `(``int` `i = ``0``; i < r; i++) { ` `            ``int` `x = (``int``)Math.pow(``2``, i); ` `            ``for` `(``int` `j = ``1``; j < ar.length; j++) { ` `                ``if` `(((j >> i) & ``1``) == ``1``) { ` `                    ``if` `(x != j) ` `                        ``ar[x] = ar[x] ^ ar[j]; ` `                ``} ` `            ``} ` `            ``System.out.println(``"r"` `+ x + ``" = "` `                               ``+ ar[x]); ` `        ``} ` ` `  `        ``return` `ar; ` `    ``} ` ` `  `    ``static` `int``[] generateCode(String str, ``int` `M, ``int` `r) ` `    ``{ ` `        ``int``[] ar = ``new` `int``[r + M + ``1``]; ` `        ``int` `j = ``0``; ` `        ``for` `(``int` `i = ``1``; i < ar.length; i++) { ` `            ``if` `((Math.ceil(Math.log(i) / Math.log(``2``)) ` `                 ``- Math.floor(Math.log(i) / Math.log(``2``))) ` `                ``== ``0``) { ` ` `  `                ``// if i == 2^n for n in (0, 1, 2, .....) ` `                ``// then ar[i]=0 ` `                ``// codeword[i] = 0 ---- ` `                ``// redundant bits are initialized ` `                ``// with value 0 ` `                ``ar[i] = ``0``; ` `            ``} ` `            ``else` `{ ` ` `  `                ``// codeword[i] = dataword[j] ` `                ``ar[i] = (``int``)(str.charAt(j) - ``'0'``); ` `                ``j++; ` `            ``} ` `        ``} ` `        ``return` `ar; ` `    ``} ` ` `  `    ``// Driver code ` `    ``public` `static` `void` `main(String[] args) ` `    ``{ ` ` `  `        ``// input message ` `        ``String str = ``"0101"``; ` `        ``int` `M = str.length(); ` `        ``int` `r = ``1``; ` ` `  `        ``while` `(Math.pow(``2``, r) < (M + r + ``1``)) { ` `            ``// r is number of redundant bits ` `            ``r++; ` `        ``} ` `        ``int``[] ar = generateCode(str, M, r); ` ` `  `        ``System.out.println(``"Generated hamming code "``); ` `        ``ar = calculation(ar, r); ` `        ``print(ar); ` `    ``} ` `} `

Output:

```Generated hamming code
r1 = 0
r2 = 1
r4 = 0
0100101
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : Akanksha_Rai