# 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 intialized ` `                ``// 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
```

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.