Tech Master Tutorials

# Bits

All Possible Subsets:

```
//Bit manipulation can be used to find out all the subsets of a set.
//If we have set of N elements then there are 2^N possible subsets of
//the given set. So if we can represent each element in a subset with
//a bit (either 0 or 1). This can be used to represent whether the
//corresponding element belongs to this given subset or not.  Each bit
//pattern will be a subset.

public class AllPossibleSubsets {

public static void main(String[] args) {
char[] arr={'A','B','C'};
possibleSubsets(arr, arr.length);
}

static void possibleSubsets(char A[], int N)
{
for(int i = 0;i < (1 << N); ++i)
{
for(int j = 0;j < N;++j)
{

if((i & (1 << j))!=0)
{
//Printing the selected elements for the particular subset
System.out.print(A[j]+" ");
}
}
System.out.println();
}
}

}
```

Finding out if a number is a Power of 2::

```public class PowerOfTwo {
//Counting number of bits in a number

public static void main(String[] args) {
int num=4;
System.out.println(isPowerOfTwo(num));
}

private static boolean isPowerOfTwo(int num) {
// if num==0 then function will return false
if(num==0){
return false;
}
//if num is power of 2 then num&(num-1) will be zero
//because num will have only rightmost bit set as 1 and
//num-1 will have all other bits set as 1
//so will return true
//otherwise false
return (num&(num-1))==0;
}

}
```