Need Programming Assignment Help?

Get Help with Programming Assignment in Java, C/C++, Dot Net, PHP, Database and UML Diagrams

Java Program to implement Bit Set

Java Program to implement Bit Set

This is a Java Program to implement Bit Set. Here bit matrix is implemented as an array of bit sets.

import java.util.Scanner;
 
/** class bit set */
class BitSet
{
 private byte[] bits;
 private int bitSetSize;
 
 /** constructor **/
 public BitSet(int size)
 {
 bitSetSize = size;
 bits = new byte[1 + size/8];
 }
 
 /** constructor **/
 public BitSet(BitSet bs)
 {
 bitSetSize = bs.bitSetSize;
 bits = new byte[bs.bits.length];
 System.arraycopy(bs.bits, 0, bits, 0, bs.bits.length);
 }
 
 /** function to clear all bits **/
 public void clear()
 {
 bits = new byte[bits.length];
 }
 
 /** function setBit - bit to be set **/
 public void setBit(int n)
 {
 bits[n / 8] |= (1 << (n % 8));
 }
 
 /** function getBit **/
 public boolean getBit(int n)
 {
 return ((bits[n / 8] & (1 << (n % 8))) != 0);
 }
 
 /** function clearBit **/
 public void clearBit(int n)
 {
 bits[n / 8] &= ((1 << (n % 8)) ^ ((1 << 8) - 1));
 }
 
 /** function for or **/
 public void or(BitSet set)
 {
 for (int i = 0; i < bits.length; i++)
 {
 if (i < set.bits.length)
 bits[i] |= set.bits[i];
 else
 break;
 }
 }
 
 /** function for and **/
 public void and(BitSet set)
 {
 for (int i = 0; i < bits.length; i++)
 {
 if (i < set.bits.length)
 bits[i] &= set.bits[i];
 else
 bits[i] = 0;
 }
 }
 
 /** function to display bitset */
 public void display()
 {
 System.out.print("\nBit Set : ");
 for (int i = 0; i < bitSetSize; i++)
 if (getBit(i))
 System.out.print(i +" ");
 System.out.println();
 }
}
 
/** Class BitSetTest **/
public class BitSetTest
{
 public static void main(String[] args)
 {
 Scanner scan = new Scanner(System.in);
 System.out.println("Bit Set Test\n");
 
 System.out.println("Enter max size of Bit Set 1");
 BitSet bs1 = new BitSet(scan.nextInt() );
 
 char ch;
 /* Perform bitset operations */
 do
 {
 System.out.println("\nBit Set Operations\n");
 System.out.println("1. set bit");
 System.out.println("2. get bit");
 System.out.println("3. clear bit");
 System.out.println("4. clear");
 
 int choice = scan.nextInt();
 switch (choice)
 {
 case 1 :
 System.out.println("Enter integer element to set");
 bs1.setBit(scan.nextInt() );
 break;
 case 2 :
 System.out.println("Enter integer element to get status");
 System.out.println("Bit Status : "+ bs1.getBit(scan.nextInt() ));
 break;
 case 3 :
 System.out.println("Enter integer element to clear");
 bs1.clearBit(scan.nextInt() );
 break;
 case 4 :
 System.out.println("Bit Set Cleared");
 bs1.clear();
 break;
 default :
 System.out.println("Wrong Entry \n ");
 break;
 }
 bs1.display();
 
 System.out.println("\nDo you want to continue (Type y or n) \n");
 ch = scan.next().charAt(0);
 } while (ch == 'Y'|| ch == 'y');
 
 
 System.out.println("\n\nEnter max size of Bit Set 2");
 BitSet bs2 = new BitSet(scan.nextInt() );
 
 /* Perform bitset operations */
 do
 {
 System.out.println("\nBit Set Operations\n");
 System.out.println("1. set bit");
 System.out.println("2. get bit");
 System.out.println("3. clear bit");
 System.out.println("4. clear");
 
 int choice = scan.nextInt();
 switch (choice)
 {
 case 1 :
 System.out.println("Enter integer element to set");
 bs2.setBit(scan.nextInt() );
 break;
 case 2 :
 System.out.println("Enter integer element to get status");
 System.out.println("Bit Status : "+ bs2.getBit(scan.nextInt() ));
 break;
 case 3 :
 System.out.println("Enter integer element to clear");
 bs2.clearBit(scan.nextInt() );
 break;
 case 4 :
 System.out.println("Bit Set Cleared");
 bs2.clear();
 break;
 default :
 System.out.println("Wrong Entry \n ");
 break;
 }
 bs2.display();
 
 System.out.println("\nDo you want to continue (Type y or n) \n");
 ch = scan.next().charAt(0);
 } while (ch == 'Y'|| ch == 'y');
 
 
 BitSet temp = new BitSet(bs1);
 temp.or(bs2);
 System.out.println("\n\nBitSet1 OR BitSet2");
 temp.display();
 
 temp = new BitSet(bs1);
 temp.and(bs2);
 System.out.println("\nBitSet1 AND BitSet2");
 temp.display();
 
 }
}