If above criptic notations make some sense for you and you enjoyed reading above then here is some resource for you. I was actually searching way to set or reset a bit on a number. Finally i got some solution to share:
Setting a bit:
number = number | (1 << n); //(it will set (n+1) th bit)
e.g.:
num1 = 32;//100000
n = 2;
num2 = num1 | (1<<n);//num2=36 (100100)…it is setting 3rd bit
Resetting(Clearing) a bit:
number = number & ~(1<<n); //it will clear (n+1)th bit.
e.g.:
num1 = 34; //100010
n = 1;
num2 = num1 & ~(1<<n); //num2=32(100000)…it is clearing 2nd bit
using above we can write function to set and reset bit:
/*set the bit at bitPos*/
int setBit(int num,int bitPos)
{
return num | (1<<(bitPos-1));
}
and to clear:
/*reset(clear) the bit at bitPos*/
int resetBit(int num, int bitPos)
{
return num & ~(1<<(bitPos-1));
}
Here I have found some good resource on bit twiddling:
Some thing more advance:
reference:
