This is a Java Program to implement Bit Set. Bit Set is an array data structure used to implement a simple set data structure.
Here is the source code of the Java Program to implement Bit Set. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
/**
** Java Program to implement Bit Set
**/
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();
}
}
Bit Set Test Enter max size of Bit Set 1 50 Bit Set Operations 1. set bit 2. get bit 3. clear bit 4. clear 1 Enter integer element to set 24 Bit Set : 24 Do you want to continue (Type y or n) y Bit Set Operations 1. set bit 2. get bit 3. clear bit 4. clear 1 Enter integer element to set 6 Bit Set : 6 24 Do you want to continue (Type y or n) y Bit Set Operations 1. set bit 2. get bit 3. clear bit 4. clear 1 Enter integer element to set 28 Bit Set : 6 24 28 Do you want to continue (Type y or n) y Bit Set Operations 1. set bit 2. get bit 3. clear bit 4. clear 1 Enter integer element to set 5 Bit Set : 5 6 24 28 Do you want to continue (Type y or n) y Bit Set Operations 1. set bit 2. get bit 3. clear bit 4. clear 1 Enter integer element to set 14 Bit Set : 5 6 14 24 28 Do you want to continue (Type y or n) y Bit Set Operations 1. set bit 2. get bit 3. clear bit 4. clear 2 Enter integer element to get status 14 Bit Status : true Bit Set : 5 6 14 24 28 Do you want to continue (Type y or n) y Bit Set Operations 1. set bit 2. get bit 3. clear bit 4. clear 3 Enter integer element to clear 14 Bit Set : 5 6 24 28 Do you want to continue (Type y or n) n Enter max size of Bit Set 2 50 Bit Set Operations 1. set bit 2. get bit 3. clear bit 4. clear 1 Enter integer element to set 14 Bit Set : 14 Do you want to continue (Type y or n) y Bit Set Operations 1. set bit 2. get bit 3. clear bit 4. clear 1 Enter integer element to set 7 Bit Set : 7 14 Do you want to continue (Type y or n) y Bit Set Operations 1. set bit 2. get bit 3. clear bit 4. clear 1 Enter integer element to set 1 Bit Set : 1 7 14 Do you want to continue (Type y or n) y Bit Set Operations 1. set bit 2. get bit 3. clear bit 4. clear 1 Enter integer element to set 28 Bit Set : 1 7 14 28 Do you want to continue (Type y or n) y Bit Set Operations 1. set bit 2. get bit 3. clear bit 4. clear 1 Enter integer element to set 5 Bit Set : 1 5 7 14 28 Do you want to continue (Type y or n) n BitSet1 OR BitSet2 Bit Set : 1 5 6 7 14 24 28 BitSet1 AND BitSet2 Bit Set : 5 28
Related posts:
HttpClient Connection Management
Java Program to Construct a Random Graph by the Method of Random Edge Selection
HttpClient Timeout
Java Program to Find Second Smallest of n Elements with Given Complexity Constraint
Spring Boot - Database Handling
Merging Streams in Java
Spring Boot - Service Components
Spring Cloud – Tracing Services with Zipkin
Java Program to Implement Caesar Cypher
Deploy a Spring Boot WAR into a Tomcat Server
Derived Query Methods in Spring Data JPA Repositories
Spring REST API + OAuth2 + Angular
Java Program to Find the Connected Components of an UnDirected Graph
Spring @RequestMapping New Shortcut Annotations
The “final” Keyword in Java
A Guide to the ResourceBundle
Spring MVC and the @ModelAttribute Annotation
Java Program to Implement Binary Search Tree
Guide to Guava Multimap
An Intro to Spring Cloud Zookeeper
Daemon Threads in Java
Ways to Iterate Over a List in Java
Split a String in Java
Quick Guide to Spring Controllers
Beans and Dependency Injection
Spring Security Custom AuthenticationFailureHandler
Spring JDBC
Mảng (Array) trong Java
Tạo ứng dụng Java RESTful Client với thư viện OkHttp
Java Program to Perform Insertion in a 2 Dimension K-D Tree
HttpClient with SSL
Java Concurrency Interview Questions and Answers