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:
Interface trong Java 8 – Default method và Static method
How to Remove the Last Character of a String?
Send an email using the SMTP protocol
Java Program to Check Whether an Undirected Graph Contains a Eulerian Cycle
Java Program to Compute the Area of a Triangle Using Determinants
Java Program to Implement Sieve Of Eratosthenes
@Before vs @BeforeClass vs @BeforeEach vs @BeforeAll
Hướng dẫn Java Design Pattern – Transfer Object
Mockito and JUnit 5 – Using ExtendWith
Java Program to Implement Hash Tables Chaining with Doubly Linked Lists
Functional Interfaces in Java 8
Logout in an OAuth Secured Application
Java Program to Generate Random Partition out of a Given Set of Numbers or Characters
Compact Strings in Java 9
Receive email using IMAP
Convert Hex to ASCII in Java
Stack Memory and Heap Space in Java
Request Method Not Supported (405) in Spring
Java Program to Implement Euclid GCD Algorithm
Java Program to Use rand and srand Functions
More Jackson Annotations
Java Program to Implement Quick sort
Java Program to Find Minimum Element in an Array using Linear Search
Guide to Java 8 groupingBy Collector
Java Program to Implement Sieve Of Atkin
XML-Based Injection in Spring
Spring Boot - Rest Controller Unit Test
Biến trong java
Lập trình mạng với java
Java Program to implement Sparse Vector
Practical Java Examples of the Big O Notation
Chuyển đổi Array sang ArrayList và ngược lại