Skip to content

Commit 400ddd9

Browse files
committed
Hamming Code added
1 parent 4d2cc94 commit 400ddd9

1 file changed

Lines changed: 96 additions & 0 deletions

File tree

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
//Hamming Code
2+
import java.util.*;
3+
4+
class sjs7007_Hamming_Code
5+
{
6+
public static void main(String[] args)
7+
{
8+
Scanner ip = new Scanner(System.in);
9+
System.out.print("Enter Message : ");
10+
String msg = ip.next();
11+
int r=0,m=msg.length();
12+
//calculate number of parity bits needed using m+r+1<=2^r
13+
while(true)
14+
{
15+
if(m+r+1<=Math.pow(2,r))
16+
{
17+
break;
18+
}
19+
r++;
20+
}
21+
System.out.println("Number of parity bits needed : "+r);
22+
int transLength = msg.length()+r,temp=0,temp2=0,j=0;
23+
int transMsg[]=new int[transLength+1]; //+1 because starts with 1
24+
for(int i=1;i<=transLength;i++)
25+
{
26+
temp2=(int)Math.pow(2,temp);
27+
if(i%temp2!=0)
28+
{
29+
transMsg[i]=Integer.parseInt(Character.toString(msg.charAt(j)));
30+
j++;
31+
}
32+
else
33+
{
34+
temp++;
35+
}
36+
}
37+
for(int i=1;i<=transLength;i++)
38+
{
39+
System.out.print(transMsg[i]);
40+
}
41+
System.out.println();
42+
43+
for(int i=0;i<r;i++)
44+
{
45+
int smallStep=(int)Math.pow(2,i);
46+
int bigStep=smallStep*2;
47+
int start=smallStep,checkPos=start;
48+
System.out.println("Calculating Parity bit for Position : "+smallStep);
49+
System.out.print("Bits to be checked : ");
50+
while(true)
51+
{
52+
for(int k=start;k<=start+smallStep-1;k++)
53+
{
54+
checkPos=k;
55+
System.out.print(checkPos+" ");
56+
if(k>transLength)
57+
{
58+
break;
59+
}
60+
transMsg[smallStep]^=transMsg[checkPos];
61+
}
62+
if(checkPos>transLength)
63+
{
64+
break;
65+
}
66+
else
67+
{
68+
start=start+bigStep;
69+
}
70+
}
71+
System.out.println();
72+
}
73+
//Display encoded message
74+
System.out.print("Hamming Encoded Message : ");
75+
for(int i=1;i<=transLength;i++)
76+
{
77+
System.out.print(transMsg[i]);
78+
}
79+
System.out.println();
80+
}
81+
}
82+
83+
/* Output
84+
85+
Enter Message : 1001
86+
Number of parity bits needed : 3
87+
0010001
88+
Calculating Parity bit for Position : 1
89+
Bits to be checked : 1 3 5 7 9
90+
Calculating Parity bit for Position : 2
91+
Bits to be checked : 2 3 6 7 10
92+
Calculating Parity bit for Position : 4
93+
Bits to be checked : 4 5 6 7 12
94+
Hamming Encoded Message : 0011001
95+
96+
*/

0 commit comments

Comments
 (0)