34
Bitwise Programming
Bit-manipulation

1. Checking whether K-th bit is set or not

Let us assume that given number is n. Then for checking the K-th bit, use the following expression: n & (1 << K -1).

If the expression is true then we can say the k-th bit is set(that means , set to 1)

Example: n = 01001011 And K = 4

                         n & (1 << k-1)   00001000

2. Setting K-th bit

For a given number n , to set the K-th, use the following expression: n | 1 << (K-1).

Example: n = 01001011 And K = 3

                    n | (1 << K-1)   01001111

3. Clearing K-th bit

To clear K-th bit of a given number n, use the following expression: n & ~ (1 << K -1).

Example: n = 01001011 And K = 4

                    n & ~(1 << K - 1)   01000011

4. Toggling K-th bit

For a given number n, for toggling the K-th bit, use the expression: n ^ (1 << K -1).

Example: n = 01001011 And K = 3

                    1 << (K - 1)    00000100

                    n ^ (1 << K -1)    01001111

5. Checking whether number is Power of 2 or not

Given number n, to check whether the number is 2 raised to power n form or not, use the following expression: if (n & n-1 == 0).

Example: n = 01001011

                  n - 1 = 01001010

                  n &  n-1 = 01001010

                  if(n & n-1 == 0)       0

6. Multiplying number by power of 2

For a given number n, to multiply the number with 2 raised to power K, use the following expression: n << K.

Example: n = 01001011 and K = 2

                  n << K     00101100

7. Dividing number by power of 2

For a given number n, to divide the number with 2 raised to power K, use the following expression: n >> k.

Example: n = 01001011 And K = 2

                  n >> K     00010010

8. Finding Modulo of a Given Number

For a given number n, to find the %8, use the following expression: n & 0x7. Similarly, to find %32, use the following expression: n & 0x1F.

Important note: As stated above, we can write for any modulo value.

9. Average without Division

Is there a bit-twiddling algorithm to replace mid = (low + high) / 2 (used in Binary Search and Merge Sort) with something much faster?

Use mid = (low + high) >> 1, But, by using this there may be the possibility o f integer overflow, to overcame this issue , use the following expression: low + ((high - low) >>1) .

Wiki Page

Blog Page

Author

Notifications

?