Program 2 : Write a program to perform bit stuffing.
import java.util.*;
public class bit_stuffing
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
System.out.print("Enter the message:-");
String d1 = sc.nextLine();
String remaining = new String();
String output=new String();
int counter = 0;
for(int i=0;i<d1.length();i++)
{
if (d1.charAt(i)!='1' && d1.charAt(i)!='0')
{
System.out.println("Enter valid Binary values");
return;
}
if(d1.charAt(i) == '1')
{
counter++;
remaining = remaining + d1.charAt(i);
}
else
{
remaining = remaining + d1.charAt(i);
counter = 0;
}
if(counter == 5)
{
remaining = remaining + '0';
counter = 0;
}
}
System.out.println("Flag--> 01111110");
String new1="|01111110 | "+remaining+" | 01111110|";
System.out.println("Stuffed data at intermediate site is:");
for(int k=0;k<=(28+d1.length());k++)
{
System.out.print("-");
}
System.out.println();
System.out.println(" "+new1);
for(int k=0;k<=(28+d1.length());k++)
{
System.out.print("-");
}
System.out.println();
counter=0;
for(int i=0;i<remaining.length();i++)
{
if(remaining.charAt(i) == '1')
{
counter++;
output = output + remaining.charAt(i);
}
else
{
output = output + remaining.charAt(i);
counter = 0;
}
if(counter == 5)
{
if((i+2)!=remaining.length())
{
output = output + remaining.charAt(i+2);
}
else
{
output=output + '1';
}
i=i+2;
counter = 1;
}
}
System.out.println("Destuffed BIT is: "+output);
}
}
Output:
Program 3: Write a program to find out the Hamming code.
class HammingCode {
static void print(int ar[])
{
for (int i = 1; i < ar.length; i++) {
System.out.print(ar[i]);
}
System.out.println();
}
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)
{ ar[i] = 0;
}
else {
ar[i] = (int)(str.charAt(j) - '0');
j++;
}
}
return ar;
}
public static void main(String[] args)
{
String str = "0101";
int M = str.length();
int r = 1;
while (Math.pow(2, r) < (M + r + 1)) { r+
+;
}
int[] ar = generateCode(str, M, r);
System.out.println("Generated hamming code ");
ar = calculation(ar, r);
print(ar);
}
}
Output :
Program 4 : Write a program to implement CRC mechanism.
class CRC {
static String toBin(int num)
String bin = "";
while (num > 0) {
if ((num & 1) != 0)
bin = "1" + bin;
else
bin = "0" + bin;
num = num >> 1;
return bin;
static int toDec(String bin)
int num = 0;
for (int i = 0; i < bin.length(); i++)
{ if (bin.charAt(i) == '1')
num += 1 << (bin.length() - i - 1);
return num;
}
static void CRC(String dataword, String generator)
int l_gen = generator.length();
int gen = toDec(generator);
int dword = toDec(dataword);
int dividend = dword << (l_gen - 1);
int shft = (int)Math.ceil(Math.log(dividend + 1/ Math.log(2))- l_gen);
int rem;
while ((dividend >= gen) || (shft >= 0))
{ rem = (dividend >> shft) ^ gen;
dividend = (dividend & ((1 << shft) - 1))| (rem << shft);
shft = (int)Math.ceil(Math.log(dividend + 1)/ Math.log(2))- l_gen;
int codeword = (dword << (l_gen - 1)) | dividend;
System.out.println("Remainder: " + toBin(dividend));
System.out.println("Codeword : " + toBin(codeword));
public static void main(String[] args) {
String dataword, generator;
dataword = "10011101";
generator = "1001";
CRC(dataword, generator);
}
Output: